﻿2026-06-19T23:28:15.4365384Z ##[group]Run ./traceable-reqs check --json
2026-06-19T23:28:15.4365847Z [36;1m./traceable-reqs check --json[0m
2026-06-19T23:28:15.4378410Z shell: /usr/bin/bash -e {0}
2026-06-19T23:28:15.4378729Z ##[endgroup]
2026-06-19T23:28:15.4609793Z {
2026-06-19T23:28:15.4610389Z   "schemaVersion": 1,
2026-06-19T23:28:15.4610855Z   "summary": {
2026-06-19T23:28:15.4611294Z     "requirementCount": 268,
2026-06-19T23:28:15.4612059Z     "completeCount": 268,
2026-06-19T23:28:15.4612501Z     "incompleteCount": 0,
2026-06-19T23:28:15.4612946Z     "findingCount": 0
2026-06-19T23:28:15.4613351Z   },
2026-06-19T23:28:15.4613731Z   "requirements": [
2026-06-19T23:28:15.4614132Z     {
2026-06-19T23:28:15.4614873Z       "id": "REQ-API-1",
2026-06-19T23:28:15.4615522Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-19T23:28:15.4616246Z       "requiredStages": [
2026-06-19T23:28:15.4616767Z         "impl",
2026-06-19T23:28:15.4617240Z         "unit",
2026-06-19T23:28:15.4617712Z         "int"
2026-06-19T23:28:15.4618250Z       ],
2026-06-19T23:28:15.4618694Z       "stages": {
2026-06-19T23:28:15.4619290Z         "doc": {
2026-06-19T23:28:15.4619790Z           "complete": false,
2026-06-19T23:28:15.4620353Z           "evidence": []
2026-06-19T23:28:15.4620857Z         },
2026-06-19T23:28:15.4621335Z         "impl": {
2026-06-19T23:28:15.4621830Z           "complete": true,
2026-06-19T23:28:15.4622362Z           "evidence": [
2026-06-19T23:28:15.4622867Z             {
2026-06-19T23:28:15.4623395Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.4624011Z               "line": 15
2026-06-19T23:28:15.4624512Z             }
2026-06-19T23:28:15.4624978Z           ]
2026-06-19T23:28:15.4625352Z         },
2026-06-19T23:28:15.4625734Z         "int": {
2026-06-19T23:28:15.4626149Z           "complete": true,
2026-06-19T23:28:15.4626577Z           "evidence": [
2026-06-19T23:28:15.4626983Z             {
2026-06-19T23:28:15.4627431Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.4627952Z               "line": 13
2026-06-19T23:28:15.4628367Z             }
2026-06-19T23:28:15.4628754Z           ]
2026-06-19T23:28:15.4629206Z         },
2026-06-19T23:28:15.4629579Z         "unit": {
2026-06-19T23:28:15.4629984Z           "complete": true,
2026-06-19T23:28:15.4630440Z           "evidence": [
2026-06-19T23:28:15.4630865Z             {
2026-06-19T23:28:15.4631304Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.4631804Z               "line": 717
2026-06-19T23:28:15.4632229Z             },
2026-06-19T23:28:15.4632614Z             {
2026-06-19T23:28:15.4633049Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.4633570Z               "line": 804
2026-06-19T23:28:15.4633979Z             }
2026-06-19T23:28:15.4634381Z           ]
2026-06-19T23:28:15.4634763Z         }
2026-06-19T23:28:15.4635143Z       }
2026-06-19T23:28:15.4635533Z     },
2026-06-19T23:28:15.4635931Z     {
2026-06-19T23:28:15.4636342Z       "id": "REQ-API-2",
2026-06-19T23:28:15.4636971Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-19T23:28:15.4637658Z       "requiredStages": [
2026-06-19T23:28:15.4638119Z         "impl",
2026-06-19T23:28:15.4638532Z         "unit",
2026-06-19T23:28:15.4638923Z         "int"
2026-06-19T23:28:15.4639375Z       ],
2026-06-19T23:28:15.4639785Z       "stages": {
2026-06-19T23:28:15.4640178Z         "doc": {
2026-06-19T23:28:15.4640507Z           "complete": false,
2026-06-19T23:28:15.4640986Z           "evidence": []
2026-06-19T23:28:15.4641410Z         },
2026-06-19T23:28:15.4641807Z         "impl": {
2026-06-19T23:28:15.4642235Z           "complete": true,
2026-06-19T23:28:15.4642704Z           "evidence": [
2026-06-19T23:28:15.4643131Z             {
2026-06-19T23:28:15.4643595Z               "path": "crates/spt-store/src/history.rs",
2026-06-19T23:28:15.4644134Z               "line": 17
2026-06-19T23:28:15.4644563Z             },
2026-06-19T23:28:15.4644965Z             {
2026-06-19T23:28:15.4645708Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.4646241Z               "line": 20
2026-06-19T23:28:15.4646678Z             },
2026-06-19T23:28:15.4647082Z             {
2026-06-19T23:28:15.4647531Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.4648055Z               "line": 142
2026-06-19T23:28:15.4648495Z             },
2026-06-19T23:28:15.4648883Z             {
2026-06-19T23:28:15.4649425Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4649968Z               "line": 24
2026-06-19T23:28:15.4650241Z             },
2026-06-19T23:28:15.4650507Z             {
2026-06-19T23:28:15.4650961Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4651310Z               "line": 41
2026-06-19T23:28:15.4651598Z             },
2026-06-19T23:28:15.4651865Z             {
2026-06-19T23:28:15.4652170Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4652538Z               "line": 209
2026-06-19T23:28:15.4652833Z             },
2026-06-19T23:28:15.4653110Z             {
2026-06-19T23:28:15.4653424Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4653782Z               "line": 251
2026-06-19T23:28:15.4654070Z             },
2026-06-19T23:28:15.4654328Z             {
2026-06-19T23:28:15.4654638Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4654990Z               "line": 330
2026-06-19T23:28:15.4655272Z             },
2026-06-19T23:28:15.4655535Z             {
2026-06-19T23:28:15.4655840Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4656197Z               "line": 393
2026-06-19T23:28:15.4656493Z             },
2026-06-19T23:28:15.4656748Z             {
2026-06-19T23:28:15.4657056Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4657399Z               "line": 432
2026-06-19T23:28:15.4657690Z             },
2026-06-19T23:28:15.4657957Z             {
2026-06-19T23:28:15.4658248Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.4658587Z               "line": 17
2026-06-19T23:28:15.4658872Z             },
2026-06-19T23:28:15.4659258Z             {
2026-06-19T23:28:15.4659575Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.4659928Z               "line": 30
2026-06-19T23:28:15.4660214Z             },
2026-06-19T23:28:15.4660481Z             {
2026-06-19T23:28:15.4660777Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.4661121Z               "line": 63
2026-06-19T23:28:15.4661392Z             },
2026-06-19T23:28:15.4661665Z             {
2026-06-19T23:28:15.4661966Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.4662302Z               "line": 77
2026-06-19T23:28:15.4662584Z             }
2026-06-19T23:28:15.4662851Z           ]
2026-06-19T23:28:15.4663107Z         },
2026-06-19T23:28:15.4663432Z         "int": {
2026-06-19T23:28:15.4663886Z           "complete": true,
2026-06-19T23:28:15.4664356Z           "evidence": [
2026-06-19T23:28:15.4664797Z             {
2026-06-19T23:28:15.4665250Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.4665771Z               "line": 14
2026-06-19T23:28:15.4666204Z             },
2026-06-19T23:28:15.4666599Z             {
2026-06-19T23:28:15.4667059Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.4667587Z               "line": 187
2026-06-19T23:28:15.4668013Z             }
2026-06-19T23:28:15.4668418Z           ]
2026-06-19T23:28:15.4668804Z         },
2026-06-19T23:28:15.4669277Z         "unit": {
2026-06-19T23:28:15.4669710Z           "complete": true,
2026-06-19T23:28:15.4670178Z           "evidence": [
2026-06-19T23:28:15.4670599Z             {
2026-06-19T23:28:15.4671060Z               "path": "crates/spt-store/src/history.rs",
2026-06-19T23:28:15.4671576Z               "line": 82
2026-06-19T23:28:15.4671990Z             },
2026-06-19T23:28:15.4672396Z             {
2026-06-19T23:28:15.4673047Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.4673587Z               "line": 279
2026-06-19T23:28:15.4674025Z             },
2026-06-19T23:28:15.4674408Z             {
2026-06-19T23:28:15.4674878Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4675410Z               "line": 705
2026-06-19T23:28:15.4675857Z             },
2026-06-19T23:28:15.4676248Z             {
2026-06-19T23:28:15.4676730Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4677295Z               "line": 716
2026-06-19T23:28:15.4677726Z             },
2026-06-19T23:28:15.4678124Z             {
2026-06-19T23:28:15.4678753Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4679383Z               "line": 869
2026-06-19T23:28:15.4679818Z             },
2026-06-19T23:28:15.4680204Z             {
2026-06-19T23:28:15.4680681Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4681230Z               "line": 915
2026-06-19T23:28:15.4681667Z             },
2026-06-19T23:28:15.4682079Z             {
2026-06-19T23:28:15.4682536Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.4683052Z               "line": 143
2026-06-19T23:28:15.4683485Z             },
2026-06-19T23:28:15.4683874Z             {
2026-06-19T23:28:15.4684343Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.4684895Z               "line": 187
2026-06-19T23:28:15.4685326Z             }
2026-06-19T23:28:15.4685718Z           ]
2026-06-19T23:28:15.4686117Z         }
2026-06-19T23:28:15.4686503Z       }
2026-06-19T23:28:15.4686881Z     },
2026-06-19T23:28:15.4687285Z     {
2026-06-19T23:28:15.4687925Z       "id": "REQ-API-3",
2026-06-19T23:28:15.4688707Z       "title": "commune/signoff are file-drops, not commands",
2026-06-19T23:28:15.4689548Z       "requiredStages": [
2026-06-19T23:28:15.4690139Z         "impl",
2026-06-19T23:28:15.4690811Z         "unit",
2026-06-19T23:28:15.4691442Z         "int"
2026-06-19T23:28:15.4691952Z       ],
2026-06-19T23:28:15.4692562Z       "stages": {
2026-06-19T23:28:15.4693130Z         "doc": {
2026-06-19T23:28:15.4727141Z           "complete": false,
2026-06-19T23:28:15.4727773Z           "evidence": []
2026-06-19T23:28:15.4728325Z         },
2026-06-19T23:28:15.4728811Z         "impl": {
2026-06-19T23:28:15.4729344Z           "complete": true,
2026-06-19T23:28:15.4729722Z           "evidence": [
2026-06-19T23:28:15.4730066Z             {
2026-06-19T23:28:15.4730457Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.4730900Z               "line": 27
2026-06-19T23:28:15.4731258Z             },
2026-06-19T23:28:15.4731606Z             {
2026-06-19T23:28:15.4731993Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4732450Z               "line": 562
2026-06-19T23:28:15.4732798Z             }
2026-06-19T23:28:15.4733126Z           ]
2026-06-19T23:28:15.4733443Z         },
2026-06-19T23:28:15.4733749Z         "int": {
2026-06-19T23:28:15.4734115Z           "complete": true,
2026-06-19T23:28:15.4734478Z           "evidence": [
2026-06-19T23:28:15.4734812Z             {
2026-06-19T23:28:15.4735261Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.4735655Z               "line": 261
2026-06-19T23:28:15.4735961Z             }
2026-06-19T23:28:15.4736238Z           ]
2026-06-19T23:28:15.4736505Z         },
2026-06-19T23:28:15.4736786Z         "unit": {
2026-06-19T23:28:15.4737086Z           "complete": true,
2026-06-19T23:28:15.4737406Z           "evidence": [
2026-06-19T23:28:15.4737701Z             {
2026-06-19T23:28:15.4738035Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.4738425Z               "line": 280
2026-06-19T23:28:15.4738737Z             },
2026-06-19T23:28:15.4739152Z             {
2026-06-19T23:28:15.4739701Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.4740477Z               "line": 944
2026-06-19T23:28:15.4740956Z             }
2026-06-19T23:28:15.4741595Z           ]
2026-06-19T23:28:15.4742000Z         }
2026-06-19T23:28:15.4742405Z       }
2026-06-19T23:28:15.4742810Z     },
2026-06-19T23:28:15.4743082Z     {
2026-06-19T23:28:15.4743358Z       "id": "REQ-API-4",
2026-06-19T23:28:15.4745644Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-19T23:28:15.4747332Z       "requiredStages": [
2026-06-19T23:28:15.4747612Z         "doc",
2026-06-19T23:28:15.4747879Z         "impl",
2026-06-19T23:28:15.4748142Z         "unit"
2026-06-19T23:28:15.4748395Z       ],
2026-06-19T23:28:15.4748649Z       "stages": {
2026-06-19T23:28:15.4748908Z         "doc": {
2026-06-19T23:28:15.4749254Z           "complete": true,
2026-06-19T23:28:15.4749545Z           "evidence": [
2026-06-19T23:28:15.4749812Z             {
2026-06-19T23:28:15.4750083Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.4750389Z               "line": 149
2026-06-19T23:28:15.4750656Z             }
2026-06-19T23:28:15.4750914Z           ]
2026-06-19T23:28:15.4751157Z         },
2026-06-19T23:28:15.4751400Z         "impl": {
2026-06-19T23:28:15.4751680Z           "complete": true,
2026-06-19T23:28:15.4751969Z           "evidence": [
2026-06-19T23:28:15.4752237Z             {
2026-06-19T23:28:15.4752532Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.4752875Z               "line": 484
2026-06-19T23:28:15.4753147Z             }
2026-06-19T23:28:15.4753404Z           ]
2026-06-19T23:28:15.4753656Z         },
2026-06-19T23:28:15.4753899Z         "int": {
2026-06-19T23:28:15.4754177Z           "complete": false,
2026-06-19T23:28:15.4754480Z           "evidence": []
2026-06-19T23:28:15.4754745Z         },
2026-06-19T23:28:15.4754993Z         "unit": {
2026-06-19T23:28:15.4755264Z           "complete": true,
2026-06-19T23:28:15.4755551Z           "evidence": [
2026-06-19T23:28:15.4755828Z             {
2026-06-19T23:28:15.4756118Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.4756456Z               "line": 657
2026-06-19T23:28:15.4756729Z             },
2026-06-19T23:28:15.4756973Z             {
2026-06-19T23:28:15.4757267Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.4757600Z               "line": 681
2026-06-19T23:28:15.4757872Z             },
2026-06-19T23:28:15.4758110Z             {
2026-06-19T23:28:15.4758401Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.4758730Z               "line": 705
2026-06-19T23:28:15.4759107Z             }
2026-06-19T23:28:15.4759364Z           ]
2026-06-19T23:28:15.4759615Z         }
2026-06-19T23:28:15.4759867Z       }
2026-06-19T23:28:15.4760110Z     },
2026-06-19T23:28:15.4760353Z     {
2026-06-19T23:28:15.4760615Z       "id": "REQ-ARCH-1",
2026-06-19T23:28:15.4760944Z       "title": "Many small acyclically-layered crates",
2026-06-19T23:28:15.4761306Z       "requiredStages": [
2026-06-19T23:28:15.4761593Z         "impl"
2026-06-19T23:28:15.4761850Z       ],
2026-06-19T23:28:15.4762114Z       "stages": {
2026-06-19T23:28:15.4762369Z         "doc": {
2026-06-19T23:28:15.4762647Z           "complete": false,
2026-06-19T23:28:15.4762938Z           "evidence": []
2026-06-19T23:28:15.4763215Z         },
2026-06-19T23:28:15.4763469Z         "impl": {
2026-06-19T23:28:15.4763736Z           "complete": true,
2026-06-19T23:28:15.4764031Z           "evidence": [
2026-06-19T23:28:15.4764304Z             {
2026-06-19T23:28:15.4764604Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-19T23:28:15.4764945Z               "line": 18
2026-06-19T23:28:15.4765224Z             },
2026-06-19T23:28:15.4765616Z             {
2026-06-19T23:28:15.4765912Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-19T23:28:15.4766241Z               "line": 12
2026-06-19T23:28:15.4766512Z             },
2026-06-19T23:28:15.4766759Z             {
2026-06-19T23:28:15.4767056Z               "path": "crates/spt-store/src/lib.rs",
2026-06-19T23:28:15.4767394Z               "line": 12
2026-06-19T23:28:15.4767670Z             }
2026-06-19T23:28:15.4767918Z           ]
2026-06-19T23:28:15.4768165Z         },
2026-06-19T23:28:15.4768408Z         "int": {
2026-06-19T23:28:15.4768679Z           "complete": false,
2026-06-19T23:28:15.4769061Z           "evidence": []
2026-06-19T23:28:15.4769487Z         },
2026-06-19T23:28:15.4769730Z         "unit": {
2026-06-19T23:28:15.4769999Z           "complete": false,
2026-06-19T23:28:15.4770293Z           "evidence": []
2026-06-19T23:28:15.4770555Z         }
2026-06-19T23:28:15.4770808Z       }
2026-06-19T23:28:15.4771048Z     },
2026-06-19T23:28:15.4771275Z     {
2026-06-19T23:28:15.4771542Z       "id": "REQ-ARCH-2",
2026-06-19T23:28:15.4771929Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-19T23:28:15.4772331Z       "requiredStages": [
2026-06-19T23:28:15.4772616Z         "impl"
2026-06-19T23:28:15.4772871Z       ],
2026-06-19T23:28:15.4773122Z       "stages": {
2026-06-19T23:28:15.4773381Z         "doc": {
2026-06-19T23:28:15.4773652Z           "complete": false,
2026-06-19T23:28:15.4773948Z           "evidence": []
2026-06-19T23:28:15.4774219Z         },
2026-06-19T23:28:15.4774476Z         "impl": {
2026-06-19T23:28:15.4774738Z           "complete": true,
2026-06-19T23:28:15.4775048Z           "evidence": [
2026-06-19T23:28:15.4775329Z             {
2026-06-19T23:28:15.4775628Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-19T23:28:15.4775966Z               "line": 18
2026-06-19T23:28:15.4776233Z             }
2026-06-19T23:28:15.4776482Z           ]
2026-06-19T23:28:15.4776733Z         },
2026-06-19T23:28:15.4776986Z         "int": {
2026-06-19T23:28:15.4777272Z           "complete": false,
2026-06-19T23:28:15.4777563Z           "evidence": []
2026-06-19T23:28:15.4777826Z         },
2026-06-19T23:28:15.4778070Z         "unit": {
2026-06-19T23:28:15.4778339Z           "complete": false,
2026-06-19T23:28:15.4778625Z           "evidence": []
2026-06-19T23:28:15.4778892Z         }
2026-06-19T23:28:15.4779278Z       }
2026-06-19T23:28:15.4779536Z     },
2026-06-19T23:28:15.4779779Z     {
2026-06-19T23:28:15.4780038Z       "id": "REQ-ARCH-3",
2026-06-19T23:28:15.4780456Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-19T23:28:15.4780891Z       "requiredStages": [
2026-06-19T23:28:15.4781172Z         "impl",
2026-06-19T23:28:15.4781431Z         "unit"
2026-06-19T23:28:15.4781688Z       ],
2026-06-19T23:28:15.4781941Z       "stages": {
2026-06-19T23:28:15.4782203Z         "doc": {
2026-06-19T23:28:15.4782479Z           "complete": false,
2026-06-19T23:28:15.4782775Z           "evidence": []
2026-06-19T23:28:15.4783075Z         },
2026-06-19T23:28:15.4783332Z         "impl": {
2026-06-19T23:28:15.4783603Z           "complete": true,
2026-06-19T23:28:15.4783888Z           "evidence": [
2026-06-19T23:28:15.4784160Z             {
2026-06-19T23:28:15.4784465Z               "path": "crates/spt-proto/src/version.rs",
2026-06-19T23:28:15.4784818Z               "line": 34
2026-06-19T23:28:15.4785085Z             },
2026-06-19T23:28:15.4785342Z             {
2026-06-19T23:28:15.4785647Z               "path": "crates/spt-proto/src/version.rs",
2026-06-19T23:28:15.4785993Z               "line": 41
2026-06-19T23:28:15.4786264Z             }
2026-06-19T23:28:15.4786512Z           ]
2026-06-19T23:28:15.4786755Z         },
2026-06-19T23:28:15.4787017Z         "int": {
2026-06-19T23:28:15.4787298Z           "complete": false,
2026-06-19T23:28:15.4787593Z           "evidence": []
2026-06-19T23:28:15.4787861Z         },
2026-06-19T23:28:15.4788118Z         "unit": {
2026-06-19T23:28:15.4788390Z           "complete": true,
2026-06-19T23:28:15.4788795Z           "evidence": [
2026-06-19T23:28:15.4789152Z             {
2026-06-19T23:28:15.4789471Z               "path": "crates/spt-proto/src/version.rs",
2026-06-19T23:28:15.4789809Z               "line": 51
2026-06-19T23:28:15.4790082Z             },
2026-06-19T23:28:15.4790339Z             {
2026-06-19T23:28:15.4790645Z               "path": "crates/spt-proto/src/version.rs",
2026-06-19T23:28:15.4790997Z               "line": 71
2026-06-19T23:28:15.4791263Z             },
2026-06-19T23:28:15.4791514Z             {
2026-06-19T23:28:15.4791814Z               "path": "crates/spt-proto/src/version.rs",
2026-06-19T23:28:15.4792168Z               "line": 83
2026-06-19T23:28:15.4792544Z             }
2026-06-19T23:28:15.4792792Z           ]
2026-06-19T23:28:15.4793044Z         }
2026-06-19T23:28:15.4793288Z       }
2026-06-19T23:28:15.4793536Z     },
2026-06-19T23:28:15.4793785Z     {
2026-06-19T23:28:15.4794035Z       "id": "REQ-ARCH-4",
2026-06-19T23:28:15.4794419Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-19T23:28:15.4794844Z       "requiredStages": [
2026-06-19T23:28:15.4795134Z         "impl",
2026-06-19T23:28:15.4795393Z         "unit"
2026-06-19T23:28:15.4795655Z       ],
2026-06-19T23:28:15.4795907Z       "stages": {
2026-06-19T23:28:15.4796173Z         "doc": {
2026-06-19T23:28:15.4796445Z           "complete": false,
2026-06-19T23:28:15.4796748Z           "evidence": []
2026-06-19T23:28:15.4797034Z         },
2026-06-19T23:28:15.4797292Z         "impl": {
2026-06-19T23:28:15.4797568Z           "complete": true,
2026-06-19T23:28:15.4797858Z           "evidence": [
2026-06-19T23:28:15.4798135Z             {
2026-06-19T23:28:15.4798440Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4798774Z               "line": 165
2026-06-19T23:28:15.4799200Z             },
2026-06-19T23:28:15.4799464Z             {
2026-06-19T23:28:15.4799769Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4800117Z               "line": 188
2026-06-19T23:28:15.4800388Z             },
2026-06-19T23:28:15.4800651Z             {
2026-06-19T23:28:15.4800942Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4801275Z               "line": 208
2026-06-19T23:28:15.4801552Z             },
2026-06-19T23:28:15.4801809Z             {
2026-06-19T23:28:15.4802112Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4802451Z               "line": 223
2026-06-19T23:28:15.4802742Z             },
2026-06-19T23:28:15.4802989Z             {
2026-06-19T23:28:15.4803275Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4803619Z               "line": 273
2026-06-19T23:28:15.4803895Z             }
2026-06-19T23:28:15.4804152Z           ]
2026-06-19T23:28:15.4804397Z         },
2026-06-19T23:28:15.4804652Z         "int": {
2026-06-19T23:28:15.4804927Z           "complete": false,
2026-06-19T23:28:15.4805222Z           "evidence": []
2026-06-19T23:28:15.4805493Z         },
2026-06-19T23:28:15.4805747Z         "unit": {
2026-06-19T23:28:15.4806028Z           "complete": true,
2026-06-19T23:28:15.4806324Z           "evidence": [
2026-06-19T23:28:15.4806597Z             {
2026-06-19T23:28:15.4806902Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4807262Z               "line": 334
2026-06-19T23:28:15.4807541Z             },
2026-06-19T23:28:15.4807798Z             {
2026-06-19T23:28:15.4808098Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4808438Z               "line": 344
2026-06-19T23:28:15.4808714Z             },
2026-06-19T23:28:15.4809034Z             {
2026-06-19T23:28:15.4809377Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4809726Z               "line": 355
2026-06-19T23:28:15.4810000Z             },
2026-06-19T23:28:15.4810253Z             {
2026-06-19T23:28:15.4810544Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4810882Z               "line": 366
2026-06-19T23:28:15.4811264Z             },
2026-06-19T23:28:15.4811517Z             {
2026-06-19T23:28:15.4811807Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4812151Z               "line": 378
2026-06-19T23:28:15.4812416Z             },
2026-06-19T23:28:15.4812711Z             {
2026-06-19T23:28:15.4813002Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4813340Z               "line": 391
2026-06-19T23:28:15.4813612Z             },
2026-06-19T23:28:15.4813855Z             {
2026-06-19T23:28:15.4814150Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4814489Z               "line": 402
2026-06-19T23:28:15.4814867Z             },
2026-06-19T23:28:15.4815122Z             {
2026-06-19T23:28:15.4815410Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4815748Z               "line": 419
2026-06-19T23:28:15.4816025Z             },
2026-06-19T23:28:15.4816279Z             {
2026-06-19T23:28:15.4816569Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.4816912Z               "line": 547
2026-06-19T23:28:15.4817185Z             }
2026-06-19T23:28:15.4817429Z           ]
2026-06-19T23:28:15.4817679Z         }
2026-06-19T23:28:15.4817920Z       }
2026-06-19T23:28:15.4818164Z     },
2026-06-19T23:28:15.4818412Z     {
2026-06-19T23:28:15.4818668Z       "id": "REQ-CLI-1",
2026-06-19T23:28:15.4820218Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-19T23:28:15.4821518Z       "requiredStages": [
2026-06-19T23:28:15.4821809Z         "impl",
2026-06-19T23:28:15.4822072Z         "unit"
2026-06-19T23:28:15.4822320Z       ],
2026-06-19T23:28:15.4822593Z       "stages": {
2026-06-19T23:28:15.4822862Z         "doc": {
2026-06-19T23:28:15.4823141Z           "complete": false,
2026-06-19T23:28:15.4823432Z           "evidence": []
2026-06-19T23:28:15.4823709Z         },
2026-06-19T23:28:15.4823967Z         "impl": {
2026-06-19T23:28:15.4824234Z           "complete": true,
2026-06-19T23:28:15.4835992Z           "evidence": [
2026-06-19T23:28:15.4836342Z             {
2026-06-19T23:28:15.4836646Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4836979Z               "line": 225
2026-06-19T23:28:15.4837246Z             },
2026-06-19T23:28:15.4837493Z             {
2026-06-19T23:28:15.4837794Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4838119Z               "line": 1093
2026-06-19T23:28:15.4838399Z             },
2026-06-19T23:28:15.4838653Z             {
2026-06-19T23:28:15.4838933Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4839397Z               "line": 1692
2026-06-19T23:28:15.4839670Z             },
2026-06-19T23:28:15.4839904Z             {
2026-06-19T23:28:15.4840180Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4840510Z               "line": 3096
2026-06-19T23:28:15.4840777Z             }
2026-06-19T23:28:15.4841024Z           ]
2026-06-19T23:28:15.4841247Z         },
2026-06-19T23:28:15.4841497Z         "int": {
2026-06-19T23:28:15.4841752Z           "complete": false,
2026-06-19T23:28:15.4842048Z           "evidence": []
2026-06-19T23:28:15.4842315Z         },
2026-06-19T23:28:15.4842558Z         "unit": {
2026-06-19T23:28:15.4842830Z           "complete": true,
2026-06-19T23:28:15.4843112Z           "evidence": [
2026-06-19T23:28:15.4843384Z             {
2026-06-19T23:28:15.4843675Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4844002Z               "line": 7919
2026-06-19T23:28:15.4844276Z             }
2026-06-19T23:28:15.4844514Z           ]
2026-06-19T23:28:15.4844763Z         }
2026-06-19T23:28:15.4844992Z       }
2026-06-19T23:28:15.4845397Z     },
2026-06-19T23:28:15.4845641Z     {
2026-06-19T23:28:15.4845893Z       "id": "REQ-CLI-2",
2026-06-19T23:28:15.4846850Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-19T23:28:15.4847767Z       "requiredStages": [
2026-06-19T23:28:15.4848049Z         "impl",
2026-06-19T23:28:15.4848297Z         "unit"
2026-06-19T23:28:15.4848546Z       ],
2026-06-19T23:28:15.4848794Z       "stages": {
2026-06-19T23:28:15.4849530Z         "doc": {
2026-06-19T23:28:15.4849971Z           "complete": false,
2026-06-19T23:28:15.4850354Z           "evidence": []
2026-06-19T23:28:15.4850698Z         },
2026-06-19T23:28:15.4851007Z         "impl": {
2026-06-19T23:28:15.4851337Z           "complete": true,
2026-06-19T23:28:15.4851690Z           "evidence": [
2026-06-19T23:28:15.4852033Z             {
2026-06-19T23:28:15.4852414Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.4852841Z               "line": 414
2026-06-19T23:28:15.4853170Z             },
2026-06-19T23:28:15.4853480Z             {
2026-06-19T23:28:15.4853843Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-19T23:28:15.4854254Z               "line": 97
2026-06-19T23:28:15.4854576Z             },
2026-06-19T23:28:15.4854874Z             {
2026-06-19T23:28:15.4855247Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.4855609Z               "line": 256
2026-06-19T23:28:15.4855877Z             },
2026-06-19T23:28:15.4856129Z             {
2026-06-19T23:28:15.4856395Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4856715Z               "line": 434
2026-06-19T23:28:15.4856982Z             },
2026-06-19T23:28:15.4857234Z             {
2026-06-19T23:28:15.4857510Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4857875Z               "line": 1172
2026-06-19T23:28:15.4858147Z             },
2026-06-19T23:28:15.4858391Z             {
2026-06-19T23:28:15.4858672Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4859106Z               "line": 1930
2026-06-19T23:28:15.4859383Z             },
2026-06-19T23:28:15.4859626Z             {
2026-06-19T23:28:15.4859905Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4860226Z               "line": 2019
2026-06-19T23:28:15.4860485Z             },
2026-06-19T23:28:15.4860733Z             {
2026-06-19T23:28:15.4861005Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4861320Z               "line": 2080
2026-06-19T23:28:15.4861597Z             }
2026-06-19T23:28:15.4861834Z           ]
2026-06-19T23:28:15.4862072Z         },
2026-06-19T23:28:15.4862325Z         "int": {
2026-06-19T23:28:15.4862588Z           "complete": false,
2026-06-19T23:28:15.4862878Z           "evidence": []
2026-06-19T23:28:15.4863144Z         },
2026-06-19T23:28:15.4863401Z         "unit": {
2026-06-19T23:28:15.4863660Z           "complete": true,
2026-06-19T23:28:15.4863945Z           "evidence": [
2026-06-19T23:28:15.4864208Z             {
2026-06-19T23:28:15.4864504Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.4864838Z               "line": 338
2026-06-19T23:28:15.4865098Z             },
2026-06-19T23:28:15.4865353Z             {
2026-06-19T23:28:15.4865634Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4865949Z               "line": 8074
2026-06-19T23:28:15.4866217Z             }
2026-06-19T23:28:15.4866465Z           ]
2026-06-19T23:28:15.4866708Z         }
2026-06-19T23:28:15.4866955Z       }
2026-06-19T23:28:15.4867194Z     },
2026-06-19T23:28:15.4867429Z     {
2026-06-19T23:28:15.4867677Z       "id": "REQ-CLI-3",
2026-06-19T23:28:15.4868651Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-19T23:28:15.4869938Z       "requiredStages": [
2026-06-19T23:28:15.4870224Z         "impl",
2026-06-19T23:28:15.4870474Z         "unit"
2026-06-19T23:28:15.4870725Z       ],
2026-06-19T23:28:15.4870965Z       "stages": {
2026-06-19T23:28:15.4871227Z         "doc": {
2026-06-19T23:28:15.4871484Z           "complete": false,
2026-06-19T23:28:15.4871774Z           "evidence": []
2026-06-19T23:28:15.4872036Z         },
2026-06-19T23:28:15.4872294Z         "impl": {
2026-06-19T23:28:15.4872561Z           "complete": true,
2026-06-19T23:28:15.4872971Z           "evidence": [
2026-06-19T23:28:15.4873233Z             {
2026-06-19T23:28:15.4873510Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4873839Z               "line": 1087
2026-06-19T23:28:15.4874106Z             }
2026-06-19T23:28:15.4874334Z           ]
2026-06-19T23:28:15.4874577Z         },
2026-06-19T23:28:15.4874820Z         "int": {
2026-06-19T23:28:15.4875079Z           "complete": false,
2026-06-19T23:28:15.4875370Z           "evidence": []
2026-06-19T23:28:15.4875629Z         },
2026-06-19T23:28:15.4875875Z         "unit": {
2026-06-19T23:28:15.4876133Z           "complete": true,
2026-06-19T23:28:15.4876414Z           "evidence": [
2026-06-19T23:28:15.4876677Z             {
2026-06-19T23:28:15.4876944Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4877273Z               "line": 7884
2026-06-19T23:28:15.4877549Z             }
2026-06-19T23:28:15.4877806Z           ]
2026-06-19T23:28:15.4878054Z         }
2026-06-19T23:28:15.4878290Z       }
2026-06-19T23:28:15.4878526Z     },
2026-06-19T23:28:15.4878761Z     {
2026-06-19T23:28:15.4879152Z       "id": "REQ-CLI-4",
2026-06-19T23:28:15.4881595Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-19T23:28:15.4883623Z       "requiredStages": [],
2026-06-19T23:28:15.4883906Z       "stages": {
2026-06-19T23:28:15.4884169Z         "doc": {
2026-06-19T23:28:15.4884446Z           "complete": false,
2026-06-19T23:28:15.4884728Z           "evidence": []
2026-06-19T23:28:15.4884990Z         },
2026-06-19T23:28:15.4885242Z         "impl": {
2026-06-19T23:28:15.4885504Z           "complete": true,
2026-06-19T23:28:15.4885786Z           "evidence": [
2026-06-19T23:28:15.4886062Z             {
2026-06-19T23:28:15.4886360Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4886698Z               "line": 5650
2026-06-19T23:28:15.4886970Z             }
2026-06-19T23:28:15.4887218Z           ]
2026-06-19T23:28:15.4887451Z         },
2026-06-19T23:28:15.4887699Z         "int": {
2026-06-19T23:28:15.4887966Z           "complete": false,
2026-06-19T23:28:15.4888262Z           "evidence": []
2026-06-19T23:28:15.4888525Z         },
2026-06-19T23:28:15.4888773Z         "unit": {
2026-06-19T23:28:15.4889167Z           "complete": false,
2026-06-19T23:28:15.4889465Z           "evidence": []
2026-06-19T23:28:15.4889717Z         }
2026-06-19T23:28:15.4889974Z       }
2026-06-19T23:28:15.4890200Z     },
2026-06-19T23:28:15.4890443Z     {
2026-06-19T23:28:15.4890710Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-19T23:28:15.4893996Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-19T23:28:15.4897216Z       "requiredStages": [
2026-06-19T23:28:15.4897512Z         "impl",
2026-06-19T23:28:15.4897773Z         "unit"
2026-06-19T23:28:15.4898026Z       ],
2026-06-19T23:28:15.4898273Z       "stages": {
2026-06-19T23:28:15.4898526Z         "doc": {
2026-06-19T23:28:15.4898798Z           "complete": false,
2026-06-19T23:28:15.4899198Z           "evidence": []
2026-06-19T23:28:15.4899475Z         },
2026-06-19T23:28:15.4899717Z         "impl": {
2026-06-19T23:28:15.4899982Z           "complete": true,
2026-06-19T23:28:15.4900263Z           "evidence": [
2026-06-19T23:28:15.4900530Z             {
2026-06-19T23:28:15.4900821Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4901145Z               "line": 8
2026-06-19T23:28:15.4901416Z             },
2026-06-19T23:28:15.4901676Z             {
2026-06-19T23:28:15.4901957Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4902284Z               "line": 51
2026-06-19T23:28:15.4902558Z             },
2026-06-19T23:28:15.4902801Z             {
2026-06-19T23:28:15.4903082Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4903421Z               "line": 82
2026-06-19T23:28:15.4903688Z             },
2026-06-19T23:28:15.4903931Z             {
2026-06-19T23:28:15.4904214Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4904547Z               "line": 229
2026-06-19T23:28:15.4904815Z             }
2026-06-19T23:28:15.4905055Z           ]
2026-06-19T23:28:15.4905294Z         },
2026-06-19T23:28:15.4905538Z         "int": {
2026-06-19T23:28:15.4905800Z           "complete": false,
2026-06-19T23:28:15.4906106Z           "evidence": []
2026-06-19T23:28:15.4906377Z         },
2026-06-19T23:28:15.4906639Z         "unit": {
2026-06-19T23:28:15.4906901Z           "complete": true,
2026-06-19T23:28:15.4907201Z           "evidence": [
2026-06-19T23:28:15.4907471Z             {
2026-06-19T23:28:15.4907767Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4908105Z               "line": 249
2026-06-19T23:28:15.4908367Z             },
2026-06-19T23:28:15.4908630Z             {
2026-06-19T23:28:15.4908934Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4909358Z               "line": 256
2026-06-19T23:28:15.4909626Z             },
2026-06-19T23:28:15.4909879Z             {
2026-06-19T23:28:15.4910163Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4910484Z               "line": 263
2026-06-19T23:28:15.4910752Z             },
2026-06-19T23:28:15.4911005Z             {
2026-06-19T23:28:15.4911287Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4911615Z               "line": 270
2026-06-19T23:28:15.4911883Z             },
2026-06-19T23:28:15.4912136Z             {
2026-06-19T23:28:15.4912421Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4912743Z               "line": 297
2026-06-19T23:28:15.4913023Z             },
2026-06-19T23:28:15.4913267Z             {
2026-06-19T23:28:15.4913548Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4913872Z               "line": 307
2026-06-19T23:28:15.4914263Z             },
2026-06-19T23:28:15.4914510Z             {
2026-06-19T23:28:15.4914783Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4915108Z               "line": 317
2026-06-19T23:28:15.4915375Z             },
2026-06-19T23:28:15.4915615Z             {
2026-06-19T23:28:15.4915892Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4916216Z               "line": 331
2026-06-19T23:28:15.4916488Z             },
2026-06-19T23:28:15.4916727Z             {
2026-06-19T23:28:15.4917014Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4917343Z               "line": 340
2026-06-19T23:28:15.4917704Z             },
2026-06-19T23:28:15.4917952Z             {
2026-06-19T23:28:15.4918230Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4918555Z               "line": 348
2026-06-19T23:28:15.4918826Z             }
2026-06-19T23:28:15.4919161Z           ]
2026-06-19T23:28:15.4919408Z         }
2026-06-19T23:28:15.4919661Z       }
2026-06-19T23:28:15.4919886Z     },
2026-06-19T23:28:15.4920129Z     {
2026-06-19T23:28:15.4920395Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-19T23:28:15.4928839Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-19T23:28:15.4933155Z       "requiredStages": [
2026-06-19T23:28:15.4933445Z         "impl",
2026-06-19T23:28:15.4933713Z         "unit"
2026-06-19T23:28:15.4933974Z       ],
2026-06-19T23:28:15.4934224Z       "stages": {
2026-06-19T23:28:15.4934476Z         "doc": {
2026-06-19T23:28:15.4934739Z           "complete": false,
2026-06-19T23:28:15.4935040Z           "evidence": []
2026-06-19T23:28:15.4935312Z         },
2026-06-19T23:28:15.4935560Z         "impl": {
2026-06-19T23:28:15.4935823Z           "complete": true,
2026-06-19T23:28:15.4936099Z           "evidence": [
2026-06-19T23:28:15.4936370Z             {
2026-06-19T23:28:15.4936669Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.4937012Z               "line": 141
2026-06-19T23:28:15.4937289Z             },
2026-06-19T23:28:15.4937542Z             {
2026-06-19T23:28:15.4937824Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4938149Z               "line": 1348
2026-06-19T23:28:15.4938416Z             },
2026-06-19T23:28:15.4938677Z             {
2026-06-19T23:28:15.4939052Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4939384Z               "line": 2117
2026-06-19T23:28:15.4939656Z             },
2026-06-19T23:28:15.4939908Z             {
2026-06-19T23:28:15.4940180Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4940672Z               "line": 4340
2026-06-19T23:28:15.4940944Z             },
2026-06-19T23:28:15.4941186Z             {
2026-06-19T23:28:15.4941468Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4941786Z               "line": 4438
2026-06-19T23:28:15.4942065Z             },
2026-06-19T23:28:15.4942314Z             {
2026-06-19T23:28:15.4942595Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4942915Z               "line": 5229
2026-06-19T23:28:15.4943186Z             },
2026-06-19T23:28:15.4943429Z             {
2026-06-19T23:28:15.4943720Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4944179Z               "line": 39
2026-06-19T23:28:15.4944457Z             }
2026-06-19T23:28:15.4944707Z           ]
2026-06-19T23:28:15.4944956Z         },
2026-06-19T23:28:15.4945209Z         "int": {
2026-06-19T23:28:15.4945486Z           "complete": false,
2026-06-19T23:28:15.4945777Z           "evidence": []
2026-06-19T23:28:15.4946053Z         },
2026-06-19T23:28:15.4946324Z         "unit": {
2026-06-19T23:28:15.4946592Z           "complete": true,
2026-06-19T23:28:15.4946887Z           "evidence": [
2026-06-19T23:28:15.4947159Z             {
2026-06-19T23:28:15.4947426Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.4947755Z               "line": 10244
2026-06-19T23:28:15.4948031Z             },
2026-06-19T23:28:15.4948283Z             {
2026-06-19T23:28:15.4948555Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4948884Z               "line": 281
2026-06-19T23:28:15.4949286Z             },
2026-06-19T23:28:15.4949545Z             {
2026-06-19T23:28:15.4949820Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4950149Z               "line": 358
2026-06-19T23:28:15.4950430Z             },
2026-06-19T23:28:15.4950679Z             {
2026-06-19T23:28:15.4950960Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4951284Z               "line": 381
2026-06-19T23:28:15.4951562Z             },
2026-06-19T23:28:15.4951815Z             {
2026-06-19T23:28:15.4952105Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-19T23:28:15.4952432Z               "line": 395
2026-06-19T23:28:15.4952701Z             }
2026-06-19T23:28:15.4952959Z           ]
2026-06-19T23:28:15.4953202Z         }
2026-06-19T23:28:15.4953451Z       }
2026-06-19T23:28:15.5010364Z     },
2026-06-19T23:28:15.5011029Z     {
2026-06-19T23:28:15.5011488Z       "id": "REQ-CONSENT-1",
2026-06-19T23:28:15.5012949Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-19T23:28:15.5014182Z       "requiredStages": [
2026-06-19T23:28:15.5014468Z         "impl",
2026-06-19T23:28:15.5014716Z         "unit"
2026-06-19T23:28:15.5014983Z       ],
2026-06-19T23:28:15.5015233Z       "stages": {
2026-06-19T23:28:15.5029542Z         "doc": {
2026-06-19T23:28:15.5029885Z           "complete": false,
2026-06-19T23:28:15.5030205Z           "evidence": []
2026-06-19T23:28:15.5030481Z         },
2026-06-19T23:28:15.5030734Z         "impl": {
2026-06-19T23:28:15.5031006Z           "complete": true,
2026-06-19T23:28:15.5031283Z           "evidence": [
2026-06-19T23:28:15.5031550Z             {
2026-06-19T23:28:15.5031849Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5032203Z               "line": 27
2026-06-19T23:28:15.5032479Z             },
2026-06-19T23:28:15.5032745Z             {
2026-06-19T23:28:15.5033026Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5033360Z               "line": 75
2026-06-19T23:28:15.5033632Z             },
2026-06-19T23:28:15.5033885Z             {
2026-06-19T23:28:15.5034188Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5034831Z               "line": 98
2026-06-19T23:28:15.5035117Z             },
2026-06-19T23:28:15.5035375Z             {
2026-06-19T23:28:15.5035666Z               "path": "crates/spt-store/src/grants.rs",
2026-06-19T23:28:15.5036004Z               "line": 82
2026-06-19T23:28:15.5036276Z             },
2026-06-19T23:28:15.5036523Z             {
2026-06-19T23:28:15.5036818Z               "path": "crates/spt-store/src/grants.rs",
2026-06-19T23:28:15.5037154Z               "line": 109
2026-06-19T23:28:15.5037426Z             },
2026-06-19T23:28:15.5037669Z             {
2026-06-19T23:28:15.5037965Z               "path": "crates/spt-store/src/grants.rs",
2026-06-19T23:28:15.5038436Z               "line": 127
2026-06-19T23:28:15.5038703Z             },
2026-06-19T23:28:15.5039042Z             {
2026-06-19T23:28:15.5039347Z               "path": "crates/spt-store/src/grants.rs",
2026-06-19T23:28:15.5039673Z               "line": 142
2026-06-19T23:28:15.5039955Z             },
2026-06-19T23:28:15.5040227Z             {
2026-06-19T23:28:15.5040517Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5040842Z               "line": 7020
2026-06-19T23:28:15.5041114Z             }
2026-06-19T23:28:15.5041356Z           ]
2026-06-19T23:28:15.5041599Z         },
2026-06-19T23:28:15.5041843Z         "int": {
2026-06-19T23:28:15.5042106Z           "complete": false,
2026-06-19T23:28:15.5042395Z           "evidence": []
2026-06-19T23:28:15.5042657Z         },
2026-06-19T23:28:15.5042905Z         "unit": {
2026-06-19T23:28:15.5043177Z           "complete": true,
2026-06-19T23:28:15.5043459Z           "evidence": [
2026-06-19T23:28:15.5043716Z             {
2026-06-19T23:28:15.5044021Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5044356Z               "line": 334
2026-06-19T23:28:15.5044635Z             },
2026-06-19T23:28:15.5044890Z             {
2026-06-19T23:28:15.5045175Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5045504Z               "line": 380
2026-06-19T23:28:15.5045786Z             },
2026-06-19T23:28:15.5046029Z             {
2026-06-19T23:28:15.5046316Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5046659Z               "line": 391
2026-06-19T23:28:15.5046937Z             },
2026-06-19T23:28:15.5047194Z             {
2026-06-19T23:28:15.5047492Z               "path": "crates/spt-store/src/grants.rs",
2026-06-19T23:28:15.5047815Z               "line": 165
2026-06-19T23:28:15.5048081Z             },
2026-06-19T23:28:15.5048333Z             {
2026-06-19T23:28:15.5048621Z               "path": "crates/spt-store/src/grants.rs",
2026-06-19T23:28:15.5049040Z               "line": 184
2026-06-19T23:28:15.5049330Z             },
2026-06-19T23:28:15.5049573Z             {
2026-06-19T23:28:15.5049855Z               "path": "crates/spt-store/src/grants.rs",
2026-06-19T23:28:15.5050186Z               "line": 204
2026-06-19T23:28:15.5050458Z             },
2026-06-19T23:28:15.5050705Z             {
2026-06-19T23:28:15.5050981Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5051301Z               "line": 8306
2026-06-19T23:28:15.5051573Z             }
2026-06-19T23:28:15.5051821Z           ]
2026-06-19T23:28:15.5052069Z         }
2026-06-19T23:28:15.5052308Z       }
2026-06-19T23:28:15.5052551Z     },
2026-06-19T23:28:15.5052783Z     {
2026-06-19T23:28:15.5053042Z       "id": "REQ-CONSENT-2",
2026-06-19T23:28:15.5054123Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-19T23:28:15.5055185Z       "requiredStages": [
2026-06-19T23:28:15.5055459Z         "impl",
2026-06-19T23:28:15.5055703Z         "unit"
2026-06-19T23:28:15.5055951Z       ],
2026-06-19T23:28:15.5056190Z       "stages": {
2026-06-19T23:28:15.5056562Z         "doc": {
2026-06-19T23:28:15.5056829Z           "complete": false,
2026-06-19T23:28:15.5057120Z           "evidence": []
2026-06-19T23:28:15.5057386Z         },
2026-06-19T23:28:15.5057634Z         "impl": {
2026-06-19T23:28:15.5057910Z           "complete": true,
2026-06-19T23:28:15.5058194Z           "evidence": [
2026-06-19T23:28:15.5058456Z             {
2026-06-19T23:28:15.5058752Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5059200Z               "line": 140
2026-06-19T23:28:15.5059505Z             },
2026-06-19T23:28:15.5059762Z             {
2026-06-19T23:28:15.5060054Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5060505Z               "line": 165
2026-06-19T23:28:15.5060774Z             },
2026-06-19T23:28:15.5061013Z             {
2026-06-19T23:28:15.5061309Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5061638Z               "line": 199
2026-06-19T23:28:15.5061905Z             },
2026-06-19T23:28:15.5062162Z             {
2026-06-19T23:28:15.5062452Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5062791Z               "line": 241
2026-06-19T23:28:15.5063049Z             },
2026-06-19T23:28:15.5063296Z             {
2026-06-19T23:28:15.5063582Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5063921Z               "line": 269
2026-06-19T23:28:15.5064188Z             },
2026-06-19T23:28:15.5064431Z             {
2026-06-19T23:28:15.5064721Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5065055Z               "line": 300
2026-06-19T23:28:15.5065332Z             },
2026-06-19T23:28:15.5065589Z             {
2026-06-19T23:28:15.5065859Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5066178Z               "line": 6811
2026-06-19T23:28:15.5066454Z             },
2026-06-19T23:28:15.5066692Z             {
2026-06-19T23:28:15.5066963Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5067302Z               "line": 6869
2026-06-19T23:28:15.5067612Z             }
2026-06-19T23:28:15.5067875Z           ]
2026-06-19T23:28:15.5068113Z         },
2026-06-19T23:28:15.5068362Z         "int": {
2026-06-19T23:28:15.5068632Z           "complete": false,
2026-06-19T23:28:15.5068920Z           "evidence": []
2026-06-19T23:28:15.5069350Z         },
2026-06-19T23:28:15.5069598Z         "unit": {
2026-06-19T23:28:15.5069864Z           "complete": true,
2026-06-19T23:28:15.5070170Z           "evidence": [
2026-06-19T23:28:15.5070441Z             {
2026-06-19T23:28:15.5070737Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5071074Z               "line": 419
2026-06-19T23:28:15.5071353Z             },
2026-06-19T23:28:15.5071597Z             {
2026-06-19T23:28:15.5071884Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5072222Z               "line": 436
2026-06-19T23:28:15.5072489Z             },
2026-06-19T23:28:15.5072736Z             {
2026-06-19T23:28:15.5073051Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5073380Z               "line": 472
2026-06-19T23:28:15.5073647Z             },
2026-06-19T23:28:15.5073951Z             {
2026-06-19T23:28:15.5074256Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.5074594Z               "line": 516
2026-06-19T23:28:15.5074867Z             },
2026-06-19T23:28:15.5075129Z             {
2026-06-19T23:28:15.5075406Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5075735Z               "line": 9586
2026-06-19T23:28:15.5076008Z             },
2026-06-19T23:28:15.5076257Z             {
2026-06-19T23:28:15.5076541Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5076680Z               "line": 9668
2026-06-19T23:28:15.5076804Z             }
2026-06-19T23:28:15.5076928Z           ]
2026-06-19T23:28:15.5077052Z         }
2026-06-19T23:28:15.5077185Z       }
2026-06-19T23:28:15.5077310Z     },
2026-06-19T23:28:15.5077558Z     {
2026-06-19T23:28:15.5077706Z       "id": "REQ-CONSENT-3",
2026-06-19T23:28:15.5079934Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-19T23:28:15.5080201Z       "requiredStages": [
2026-06-19T23:28:15.5080329Z         "doc",
2026-06-19T23:28:15.5080458Z         "impl",
2026-06-19T23:28:15.5080587Z         "unit",
2026-06-19T23:28:15.5080715Z         "int"
2026-06-19T23:28:15.5080887Z       ],
2026-06-19T23:28:15.5081112Z       "stages": {
2026-06-19T23:28:15.5081272Z         "doc": {
2026-06-19T23:28:15.5081432Z           "complete": true,
2026-06-19T23:28:15.5081725Z           "evidence": [
2026-06-19T23:28:15.5081923Z             {
2026-06-19T23:28:15.5082099Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.5082294Z               "line": 304
2026-06-19T23:28:15.5082425Z             }
2026-06-19T23:28:15.5082671Z           ]
2026-06-19T23:28:15.5082824Z         },
2026-06-19T23:28:15.5083025Z         "impl": {
2026-06-19T23:28:15.5083220Z           "complete": true,
2026-06-19T23:28:15.5083364Z           "evidence": [
2026-06-19T23:28:15.5083606Z             {
2026-06-19T23:28:15.5083830Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.5084032Z               "line": 123
2026-06-19T23:28:15.5084207Z             },
2026-06-19T23:28:15.5084351Z             {
2026-06-19T23:28:15.5084635Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.5084811Z               "line": 162
2026-06-19T23:28:15.5085008Z             },
2026-06-19T23:28:15.5085159Z             {
2026-06-19T23:28:15.5085436Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.5085703Z               "line": 291
2026-06-19T23:28:15.5085865Z             },
2026-06-19T23:28:15.5086056Z             {
2026-06-19T23:28:15.5086272Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.5086447Z               "line": 563
2026-06-19T23:28:15.5086638Z             },
2026-06-19T23:28:15.5086856Z             {
2026-06-19T23:28:15.5087097Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.5087260Z               "line": 813
2026-06-19T23:28:15.5087444Z             },
2026-06-19T23:28:15.5087632Z             {
2026-06-19T23:28:15.5087879Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5088079Z               "line": 6937
2026-06-19T23:28:15.5088227Z             }
2026-06-19T23:28:15.5088389Z           ]
2026-06-19T23:28:15.5088599Z         },
2026-06-19T23:28:15.5088801Z         "int": {
2026-06-19T23:28:15.5089067Z           "complete": true,
2026-06-19T23:28:15.5089281Z           "evidence": [
2026-06-19T23:28:15.5089604Z             {
2026-06-19T23:28:15.5089888Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-19T23:28:15.5090089Z               "line": 16
2026-06-19T23:28:15.5090236Z             }
2026-06-19T23:28:15.5090427Z           ]
2026-06-19T23:28:15.5090584Z         },
2026-06-19T23:28:15.5090809Z         "unit": {
2026-06-19T23:28:15.5091028Z           "complete": true,
2026-06-19T23:28:15.5091180Z           "evidence": [
2026-06-19T23:28:15.5091363Z             {
2026-06-19T23:28:15.5091590Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.5091814Z               "line": 1019
2026-06-19T23:28:15.5092016Z             },
2026-06-19T23:28:15.5092171Z             {
2026-06-19T23:28:15.5092404Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.5092689Z               "line": 1066
2026-06-19T23:28:15.5092903Z             },
2026-06-19T23:28:15.5093060Z             {
2026-06-19T23:28:15.5093304Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.5093522Z               "line": 1302
2026-06-19T23:28:15.5093676Z             }
2026-06-19T23:28:15.5093895Z           ]
2026-06-19T23:28:15.5094067Z         }
2026-06-19T23:28:15.5094258Z       }
2026-06-19T23:28:15.5094424Z     },
2026-06-19T23:28:15.5094606Z     {
2026-06-19T23:28:15.5094850Z       "id": "REQ-CONV-1",
2026-06-19T23:28:15.5096406Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-19T23:28:15.5096755Z       "requiredStages": [
2026-06-19T23:28:15.5096945Z         "impl",
2026-06-19T23:28:15.5097094Z         "unit"
2026-06-19T23:28:15.5097312Z       ],
2026-06-19T23:28:15.5097483Z       "stages": {
2026-06-19T23:28:15.5097694Z         "doc": {
2026-06-19T23:28:15.5097863Z           "complete": false,
2026-06-19T23:28:15.5098058Z           "evidence": []
2026-06-19T23:28:15.5098267Z         },
2026-06-19T23:28:15.5098445Z         "impl": {
2026-06-19T23:28:15.5098887Z           "complete": true,
2026-06-19T23:28:15.5099140Z           "evidence": [
2026-06-19T23:28:15.5099356Z             {
2026-06-19T23:28:15.5099617Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5099889Z               "line": 938
2026-06-19T23:28:15.5100080Z             },
2026-06-19T23:28:15.5100230Z             {
2026-06-19T23:28:15.5100467Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.5100624Z               "line": 94
2026-06-19T23:28:15.5100876Z             },
2026-06-19T23:28:15.5101049Z             {
2026-06-19T23:28:15.5101249Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.5101440Z               "line": 345
2026-06-19T23:28:15.5101578Z             },
2026-06-19T23:28:15.5101835Z             {
2026-06-19T23:28:15.5102041Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.5102233Z               "line": 387
2026-06-19T23:28:15.5102422Z             },
2026-06-19T23:28:15.5102562Z             {
2026-06-19T23:28:15.5102850Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.5103024Z               "line": 472
2026-06-19T23:28:15.5103211Z             },
2026-06-19T23:28:15.5103368Z             {
2026-06-19T23:28:15.5103602Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5103850Z               "line": 667
2026-06-19T23:28:15.5104007Z             },
2026-06-19T23:28:15.5104188Z             {
2026-06-19T23:28:15.5104397Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5104593Z               "line": 693
2026-06-19T23:28:15.5104832Z             },
2026-06-19T23:28:15.5104975Z             {
2026-06-19T23:28:15.5105218Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.5105381Z               "line": 369
2026-06-19T23:28:15.5105570Z             },
2026-06-19T23:28:15.5105760Z             {
2026-06-19T23:28:15.5106022Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-19T23:28:15.5106219Z               "line": 19
2026-06-19T23:28:15.5106386Z             }
2026-06-19T23:28:15.5106562Z           ]
2026-06-19T23:28:15.5106748Z         },
2026-06-19T23:28:15.5106952Z         "int": {
2026-06-19T23:28:15.5107148Z           "complete": false,
2026-06-19T23:28:15.5107325Z           "evidence": []
2026-06-19T23:28:15.5107495Z         },
2026-06-19T23:28:15.5107688Z         "unit": {
2026-06-19T23:28:15.5107905Z           "complete": true,
2026-06-19T23:28:15.5108189Z           "evidence": [
2026-06-19T23:28:15.5108375Z             {
2026-06-19T23:28:15.5108613Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5108813Z               "line": 1263
2026-06-19T23:28:15.5109146Z             },
2026-06-19T23:28:15.5109352Z             {
2026-06-19T23:28:15.5109625Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-19T23:28:15.5109819Z               "line": 108
2026-06-19T23:28:15.5110082Z             },
2026-06-19T23:28:15.5110302Z             {
2026-06-19T23:28:15.5110497Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-19T23:28:15.5110829Z               "line": 134
2026-06-19T23:28:15.5110985Z             },
2026-06-19T23:28:15.5111204Z             {
2026-06-19T23:28:15.5111465Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-19T23:28:15.5111629Z               "line": 144
2026-06-19T23:28:15.5111819Z             }
2026-06-19T23:28:15.5111967Z           ]
2026-06-19T23:28:15.5112192Z         }
2026-06-19T23:28:15.5112377Z       }
2026-06-19T23:28:15.5112558Z     },
2026-06-19T23:28:15.5112739Z     {
2026-06-19T23:28:15.5112896Z       "id": "REQ-CONV-2",
2026-06-19T23:28:15.5114228Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-19T23:28:15.5114410Z       "requiredStages": [
2026-06-19T23:28:15.5114614Z         "impl",
2026-06-19T23:28:15.5114801Z         "unit"
2026-06-19T23:28:15.5114952Z       ],
2026-06-19T23:28:15.5115172Z       "stages": {
2026-06-19T23:28:15.5115345Z         "doc": {
2026-06-19T23:28:15.5115549Z           "complete": false,
2026-06-19T23:28:15.5115712Z           "evidence": []
2026-06-19T23:28:15.5115902Z         },
2026-06-19T23:28:15.5116626Z         "impl": {
2026-06-19T23:28:15.5116811Z           "complete": true,
2026-06-19T23:28:15.5117275Z           "evidence": [
2026-06-19T23:28:15.5117507Z             {
2026-06-19T23:28:15.5117780Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5118060Z               "line": 409
2026-06-19T23:28:15.5118229Z             },
2026-06-19T23:28:15.5118436Z             {
2026-06-19T23:28:15.5118664Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-19T23:28:15.5118854Z               "line": 119
2026-06-19T23:28:15.5119092Z             },
2026-06-19T23:28:15.5119382Z             {
2026-06-19T23:28:15.5119726Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.5119885Z               "line": 841
2026-06-19T23:28:15.5120069Z             },
2026-06-19T23:28:15.5120199Z             {
2026-06-19T23:28:15.5120509Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.5120713Z               "line": 852
2026-06-19T23:28:15.5120872Z             },
2026-06-19T23:28:15.5121057Z             {
2026-06-19T23:28:15.5121247Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.5121508Z               "line": 334
2026-06-19T23:28:15.5121663Z             },
2026-06-19T23:28:15.5121836Z             {
2026-06-19T23:28:15.5122045Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5122199Z               "line": 3046
2026-06-19T23:28:15.5122456Z             },
2026-06-19T23:28:15.5122607Z             {
2026-06-19T23:28:15.5122822Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5122984Z               "line": 3062
2026-06-19T23:28:15.5123156Z             },
2026-06-19T23:28:15.5123410Z             {
2026-06-19T23:28:15.5123595Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5123776Z               "line": 3142
2026-06-19T23:28:15.5123922Z             }
2026-06-19T23:28:15.5124112Z           ]
2026-06-19T23:28:15.5124549Z         },
2026-06-19T23:28:15.5124708Z         "int": {
2026-06-19T23:28:15.5124912Z           "complete": false,
2026-06-19T23:28:15.5125089Z           "evidence": []
2026-06-19T23:28:15.5125261Z         },
2026-06-19T23:28:15.5125456Z         "unit": {
2026-06-19T23:28:15.5125675Z           "complete": true,
2026-06-19T23:28:15.5125876Z           "evidence": [
2026-06-19T23:28:15.5126047Z             {
2026-06-19T23:28:15.5126277Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5126476Z               "line": 889
2026-06-19T23:28:15.5126685Z             },
2026-06-19T23:28:15.5126842Z             {
2026-06-19T23:28:15.5127085Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5127376Z               "line": 1014
2026-06-19T23:28:15.5127568Z             },
2026-06-19T23:28:15.5127762Z             {
2026-06-19T23:28:15.5127987Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-19T23:28:15.5128188Z               "line": 215
2026-06-19T23:28:15.5128349Z             }
2026-06-19T23:28:15.5128673Z           ]
2026-06-19T23:28:15.5128889Z         }
2026-06-19T23:28:15.5129139Z       }
2026-06-19T23:28:15.5129318Z     },
2026-06-19T23:28:15.5129461Z     {
2026-06-19T23:28:15.5129704Z       "id": "REQ-DAEMON-1",
2026-06-19T23:28:15.5130028Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-19T23:28:15.5130201Z       "requiredStages": [
2026-06-19T23:28:15.5130392Z         "impl",
2026-06-19T23:28:15.5130544Z         "unit",
2026-06-19T23:28:15.5130769Z         "int"
2026-06-19T23:28:15.5130954Z       ],
2026-06-19T23:28:15.5131149Z       "stages": {
2026-06-19T23:28:15.5131337Z         "doc": {
2026-06-19T23:28:15.5131511Z           "complete": false,
2026-06-19T23:28:15.5131737Z           "evidence": []
2026-06-19T23:28:15.5131921Z         },
2026-06-19T23:28:15.5132106Z         "impl": {
2026-06-19T23:28:15.5132256Z           "complete": true,
2026-06-19T23:28:15.5132444Z           "evidence": [
2026-06-19T23:28:15.5132659Z             {
2026-06-19T23:28:15.5132891Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5133092Z               "line": 229
2026-06-19T23:28:15.5133239Z             },
2026-06-19T23:28:15.5133426Z             {
2026-06-19T23:28:15.5133701Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.5133879Z               "line": 12
2026-06-19T23:28:15.5134073Z             },
2026-06-19T23:28:15.5134227Z             {
2026-06-19T23:28:15.5134463Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5134612Z               "line": 16
2026-06-19T23:28:15.5134857Z             },
2026-06-19T23:28:15.5135057Z             {
2026-06-19T23:28:15.5135258Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5135448Z               "line": 309
2026-06-19T23:28:15.5135596Z             },
2026-06-19T23:28:15.5135845Z             {
2026-06-19T23:28:15.5136039Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5136245Z               "line": 24
2026-06-19T23:28:15.5136446Z             },
2026-06-19T23:28:15.5136583Z             {
2026-06-19T23:28:15.5136893Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5137056Z               "line": 262
2026-06-19T23:28:15.5137236Z             },
2026-06-19T23:28:15.5137436Z             {
2026-06-19T23:28:15.5137612Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5137856Z               "line": 279
2026-06-19T23:28:15.5138007Z             },
2026-06-19T23:28:15.5138180Z             {
2026-06-19T23:28:15.5138385Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5138575Z               "line": 356
2026-06-19T23:28:15.5138805Z             },
2026-06-19T23:28:15.5139030Z             {
2026-06-19T23:28:15.5139267Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5139457Z               "line": 670
2026-06-19T23:28:15.5139628Z             },
2026-06-19T23:28:15.5139979Z             {
2026-06-19T23:28:15.5140174Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-19T23:28:15.5140375Z               "line": 15
2026-06-19T23:28:15.5140531Z             },
2026-06-19T23:28:15.5140695Z             {
2026-06-19T23:28:15.5140928Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5141142Z               "line": 229
2026-06-19T23:28:15.5141338Z             },
2026-06-19T23:28:15.5141481Z             {
2026-06-19T23:28:15.5141695Z               "path": "crates/spt/src/api/live.rs",
2026-06-19T23:28:15.5141882Z               "line": 13
2026-06-19T23:28:15.5142096Z             },
2026-06-19T23:28:15.5142358Z             {
2026-06-19T23:28:15.5142600Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5142774Z               "line": 378
2026-06-19T23:28:15.5142965Z             },
2026-06-19T23:28:15.5143180Z             {
2026-06-19T23:28:15.5143370Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5143581Z               "line": 490
2026-06-19T23:28:15.5143722Z             }
2026-06-19T23:28:15.5150659Z           ]
2026-06-19T23:28:15.5150820Z         },
2026-06-19T23:28:15.5150959Z         "int": {
2026-06-19T23:28:15.5151105Z           "complete": true,
2026-06-19T23:28:15.5151240Z           "evidence": [
2026-06-19T23:28:15.5151363Z             {
2026-06-19T23:28:15.5151612Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-19T23:28:15.5151749Z               "line": 2
2026-06-19T23:28:15.5151879Z             },
2026-06-19T23:28:15.5151993Z             {
2026-06-19T23:28:15.5152223Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-19T23:28:15.5152374Z               "line": 16
2026-06-19T23:28:15.5152504Z             },
2026-06-19T23:28:15.5152631Z             {
2026-06-19T23:28:15.5152833Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-19T23:28:15.5152965Z               "line": 12
2026-06-19T23:28:15.5153103Z             },
2026-06-19T23:28:15.5153230Z             {
2026-06-19T23:28:15.5153411Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-19T23:28:15.5153545Z               "line": 12
2026-06-19T23:28:15.5153663Z             },
2026-06-19T23:28:15.5153779Z             {
2026-06-19T23:28:15.5153958Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-19T23:28:15.5154088Z               "line": 44
2026-06-19T23:28:15.5154213Z             }
2026-06-19T23:28:15.5154341Z           ]
2026-06-19T23:28:15.5154465Z         },
2026-06-19T23:28:15.5154593Z         "unit": {
2026-06-19T23:28:15.5154747Z           "complete": true,
2026-06-19T23:28:15.5154874Z           "evidence": [
2026-06-19T23:28:15.5155004Z             {
2026-06-19T23:28:15.5155179Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.5155319Z               "line": 285
2026-06-19T23:28:15.5155443Z             },
2026-06-19T23:28:15.5155575Z             {
2026-06-19T23:28:15.5155746Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.5155882Z               "line": 293
2026-06-19T23:28:15.5156011Z             },
2026-06-19T23:28:15.5156131Z             {
2026-06-19T23:28:15.5156302Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.5156455Z               "line": 309
2026-06-19T23:28:15.5156582Z             },
2026-06-19T23:28:15.5156712Z             {
2026-06-19T23:28:15.5156878Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.5157013Z               "line": 317
2026-06-19T23:28:15.5157141Z             },
2026-06-19T23:28:15.5157266Z             {
2026-06-19T23:28:15.5157442Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5157576Z               "line": 659
2026-06-19T23:28:15.5157708Z             },
2026-06-19T23:28:15.5157832Z             {
2026-06-19T23:28:15.5158000Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5158296Z               "line": 729
2026-06-19T23:28:15.5158423Z             },
2026-06-19T23:28:15.5158542Z             {
2026-06-19T23:28:15.5158723Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5158861Z               "line": 1211
2026-06-19T23:28:15.5159051Z             },
2026-06-19T23:28:15.5159181Z             {
2026-06-19T23:28:15.5159352Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5159510Z               "line": 1248
2026-06-19T23:28:15.5159638Z             },
2026-06-19T23:28:15.5159762Z             {
2026-06-19T23:28:15.5159929Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5160150Z               "line": 1271
2026-06-19T23:28:15.5160282Z             },
2026-06-19T23:28:15.5160406Z             {
2026-06-19T23:28:15.5160577Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5160720Z               "line": 1300
2026-06-19T23:28:15.5160839Z             },
2026-06-19T23:28:15.5160975Z             {
2026-06-19T23:28:15.5161133Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5161266Z               "line": 1348
2026-06-19T23:28:15.5161390Z             },
2026-06-19T23:28:15.5161505Z             {
2026-06-19T23:28:15.5161680Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5161810Z               "line": 1391
2026-06-19T23:28:15.5161938Z             },
2026-06-19T23:28:15.5162053Z             {
2026-06-19T23:28:15.5162238Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-19T23:28:15.5162367Z               "line": 106
2026-06-19T23:28:15.5162491Z             },
2026-06-19T23:28:15.5162625Z             {
2026-06-19T23:28:15.5162792Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-19T23:28:15.5162930Z               "line": 132
2026-06-19T23:28:15.5163051Z             },
2026-06-19T23:28:15.5163178Z             {
2026-06-19T23:28:15.5163341Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5163478Z               "line": 504
2026-06-19T23:28:15.5163606Z             }
2026-06-19T23:28:15.5163730Z           ]
2026-06-19T23:28:15.5163852Z         }
2026-06-19T23:28:15.5163976Z       }
2026-06-19T23:28:15.5164105Z     },
2026-06-19T23:28:15.5164223Z     {
2026-06-19T23:28:15.5164348Z       "id": "REQ-DAEMON-2",
2026-06-19T23:28:15.5164552Z       "title": "Broker/brain split for seamless self-update",
2026-06-19T23:28:15.5164692Z       "requiredStages": [
2026-06-19T23:28:15.5164819Z         "impl",
2026-06-19T23:28:15.5164944Z         "unit",
2026-06-19T23:28:15.5165068Z         "int"
2026-06-19T23:28:15.5165196Z       ],
2026-06-19T23:28:15.5165330Z       "stages": {
2026-06-19T23:28:15.5165459Z         "doc": {
2026-06-19T23:28:15.5165589Z           "complete": true,
2026-06-19T23:28:15.5165721Z           "evidence": [
2026-06-19T23:28:15.5165845Z             {
2026-06-19T23:28:15.5166040Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-19T23:28:15.5166186Z               "line": 250
2026-06-19T23:28:15.5166311Z             }
2026-06-19T23:28:15.5166432Z           ]
2026-06-19T23:28:15.5166557Z         },
2026-06-19T23:28:15.5166691Z         "impl": {
2026-06-19T23:28:15.5166823Z           "complete": true,
2026-06-19T23:28:15.5166967Z           "evidence": [
2026-06-19T23:28:15.5167090Z             {
2026-06-19T23:28:15.5167258Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5167391Z               "line": 23
2026-06-19T23:28:15.5167516Z             },
2026-06-19T23:28:15.5167629Z             {
2026-06-19T23:28:15.5167791Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5167944Z               "line": 796
2026-06-19T23:28:15.5168073Z             },
2026-06-19T23:28:15.5168203Z             {
2026-06-19T23:28:15.5168373Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5168503Z               "line": 821
2026-06-19T23:28:15.5168630Z             },
2026-06-19T23:28:15.5168756Z             {
2026-06-19T23:28:15.5169116Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5169255Z               "line": 1057
2026-06-19T23:28:15.5169383Z             },
2026-06-19T23:28:15.5169512Z             {
2026-06-19T23:28:15.5169679Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5169808Z               "line": 32
2026-06-19T23:28:15.5169936Z             },
2026-06-19T23:28:15.5170056Z             {
2026-06-19T23:28:15.5170228Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5170356Z               "line": 942
2026-06-19T23:28:15.5170485Z             },
2026-06-19T23:28:15.5170608Z             {
2026-06-19T23:28:15.5170880Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5171010Z               "line": 1633
2026-06-19T23:28:15.5171142Z             },
2026-06-19T23:28:15.5171265Z             {
2026-06-19T23:28:15.5171418Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5171554Z               "line": 1920
2026-06-19T23:28:15.5171683Z             },
2026-06-19T23:28:15.5171807Z             {
2026-06-19T23:28:15.5171964Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-19T23:28:15.5172098Z               "line": 11
2026-06-19T23:28:15.5172222Z             },
2026-06-19T23:28:15.5172342Z             {
2026-06-19T23:28:15.5172503Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5172628Z               "line": 153
2026-06-19T23:28:15.5172761Z             },
2026-06-19T23:28:15.5172889Z             {
2026-06-19T23:28:15.5173051Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5173194Z               "line": 343
2026-06-19T23:28:15.5173310Z             },
2026-06-19T23:28:15.5173433Z             {
2026-06-19T23:28:15.5173601Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5173733Z               "line": 13
2026-06-19T23:28:15.5173853Z             },
2026-06-19T23:28:15.5173973Z             {
2026-06-19T23:28:15.5174142Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5174262Z               "line": 27
2026-06-19T23:28:15.5174388Z             },
2026-06-19T23:28:15.5174512Z             {
2026-06-19T23:28:15.5174665Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5174802Z               "line": 147
2026-06-19T23:28:15.5174927Z             },
2026-06-19T23:28:15.5175055Z             {
2026-06-19T23:28:15.5175214Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5175342Z               "line": 632
2026-06-19T23:28:15.5175466Z             },
2026-06-19T23:28:15.5175595Z             {
2026-06-19T23:28:15.5175766Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5175900Z               "line": 853
2026-06-19T23:28:15.5176028Z             },
2026-06-19T23:28:15.5176158Z             {
2026-06-19T23:28:15.5176328Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5176463Z               "line": 1000
2026-06-19T23:28:15.5176591Z             },
2026-06-19T23:28:15.5176718Z             {
2026-06-19T23:28:15.5176889Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5177016Z               "line": 1089
2026-06-19T23:28:15.5177136Z             },
2026-06-19T23:28:15.5177265Z             {
2026-06-19T23:28:15.5177427Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5177566Z               "line": 1211
2026-06-19T23:28:15.5177698Z             },
2026-06-19T23:28:15.5177818Z             {
2026-06-19T23:28:15.5177984Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-19T23:28:15.5178114Z               "line": 10
2026-06-19T23:28:15.5178243Z             }
2026-06-19T23:28:15.5178361Z           ]
2026-06-19T23:28:15.5178491Z         },
2026-06-19T23:28:15.5178623Z         "int": {
2026-06-19T23:28:15.5178753Z           "complete": true,
2026-06-19T23:28:15.5178886Z           "evidence": [
2026-06-19T23:28:15.5179185Z             {
2026-06-19T23:28:15.5179354Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-19T23:28:15.5179482Z               "line": 17
2026-06-19T23:28:15.5179614Z             },
2026-06-19T23:28:15.5179743Z             {
2026-06-19T23:28:15.5179919Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-19T23:28:15.5180045Z               "line": 90
2026-06-19T23:28:15.5180167Z             },
2026-06-19T23:28:15.5180292Z             {
2026-06-19T23:28:15.5180454Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-19T23:28:15.5180587Z               "line": 110
2026-06-19T23:28:15.5180712Z             },
2026-06-19T23:28:15.5180936Z             {
2026-06-19T23:28:15.5181102Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-19T23:28:15.5181221Z               "line": 186
2026-06-19T23:28:15.5181355Z             },
2026-06-19T23:28:15.5181478Z             {
2026-06-19T23:28:15.5181647Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-19T23:28:15.5181783Z               "line": 309
2026-06-19T23:28:15.5181902Z             },
2026-06-19T23:28:15.5182029Z             {
2026-06-19T23:28:15.5182195Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-19T23:28:15.5182330Z               "line": 128
2026-06-19T23:28:15.5182457Z             },
2026-06-19T23:28:15.5182577Z             {
2026-06-19T23:28:15.5182758Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-19T23:28:15.5182873Z               "line": 59
2026-06-19T23:28:15.5182992Z             }
2026-06-19T23:28:15.5183111Z           ]
2026-06-19T23:28:15.5183231Z         },
2026-06-19T23:28:15.5183359Z         "unit": {
2026-06-19T23:28:15.5183488Z           "complete": true,
2026-06-19T23:28:15.5183626Z           "evidence": [
2026-06-19T23:28:15.5183745Z             {
2026-06-19T23:28:15.5183912Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-19T23:28:15.5184036Z               "line": 62
2026-06-19T23:28:15.5184171Z             },
2026-06-19T23:28:15.5184298Z             {
2026-06-19T23:28:15.5184466Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-19T23:28:15.5184593Z               "line": 76
2026-06-19T23:28:15.5184716Z             },
2026-06-19T23:28:15.5184841Z             {
2026-06-19T23:28:15.5185005Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-19T23:28:15.5185134Z               "line": 88
2026-06-19T23:28:15.5185263Z             },
2026-06-19T23:28:15.5185382Z             {
2026-06-19T23:28:15.5185549Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.5185677Z               "line": 347
2026-06-19T23:28:15.5185807Z             },
2026-06-19T23:28:15.5185921Z             {
2026-06-19T23:28:15.5186089Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5186226Z               "line": 855
2026-06-19T23:28:15.5186345Z             },
2026-06-19T23:28:15.5186474Z             {
2026-06-19T23:28:15.5186636Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5186775Z               "line": 863
2026-06-19T23:28:15.5186893Z             },
2026-06-19T23:28:15.5187014Z             {
2026-06-19T23:28:15.5187179Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5187307Z               "line": 880
2026-06-19T23:28:15.5187435Z             },
2026-06-19T23:28:15.5187562Z             {
2026-06-19T23:28:15.5187715Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5187844Z               "line": 956
2026-06-19T23:28:15.5187953Z             },
2026-06-19T23:28:15.5188088Z             {
2026-06-19T23:28:15.5188254Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5188397Z               "line": 1282
2026-06-19T23:28:15.5188521Z             },
2026-06-19T23:28:15.5188650Z             {
2026-06-19T23:28:15.5188826Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5189031Z               "line": 1294
2026-06-19T23:28:15.5189266Z             },
2026-06-19T23:28:15.5189389Z             {
2026-06-19T23:28:15.5189566Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-19T23:28:15.5189694Z               "line": 110
2026-06-19T23:28:15.5189818Z             },
2026-06-19T23:28:15.5189943Z             {
2026-06-19T23:28:15.5190112Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-19T23:28:15.5190251Z               "line": 145
2026-06-19T23:28:15.5190375Z             }
2026-06-19T23:28:15.5190494Z           ]
2026-06-19T23:28:15.5190605Z         }
2026-06-19T23:28:15.5190732Z       }
2026-06-19T23:28:15.5190852Z     },
2026-06-19T23:28:15.5190976Z     {
2026-06-19T23:28:15.5191224Z       "id": "REQ-DAEMON-3",
2026-06-19T23:28:15.5191438Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-19T23:28:15.5191577Z       "requiredStages": [
2026-06-19T23:28:15.5191705Z         "impl",
2026-06-19T23:28:15.5191835Z         "unit",
2026-06-19T23:28:15.5191962Z         "int"
2026-06-19T23:28:15.5192087Z       ],
2026-06-19T23:28:15.5192212Z       "stages": {
2026-06-19T23:28:15.5192338Z         "doc": {
2026-06-19T23:28:15.5192481Z           "complete": false,
2026-06-19T23:28:15.5192608Z           "evidence": []
2026-06-19T23:28:15.5192736Z         },
2026-06-19T23:28:15.5192861Z         "impl": {
2026-06-19T23:28:15.5192989Z           "complete": true,
2026-06-19T23:28:15.5193127Z           "evidence": [
2026-06-19T23:28:15.5193238Z             {
2026-06-19T23:28:15.5193409Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5193538Z               "line": 14
2026-06-19T23:28:15.5193656Z             },
2026-06-19T23:28:15.5193791Z             {
2026-06-19T23:28:15.5193956Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-19T23:28:15.5194091Z               "line": 11
2026-06-19T23:28:15.5194210Z             },
2026-06-19T23:28:15.5194334Z             {
2026-06-19T23:28:15.5194496Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.5194629Z               "line": 305
2026-06-19T23:28:15.5194759Z             },
2026-06-19T23:28:15.5194882Z             {
2026-06-19T23:28:15.5195031Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5195163Z               "line": 1928
2026-06-19T23:28:15.5195290Z             },
2026-06-19T23:28:15.5195415Z             {
2026-06-19T23:28:15.5195565Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5195690Z               "line": 4207
2026-06-19T23:28:15.5195813Z             },
2026-06-19T23:28:15.5195937Z             {
2026-06-19T23:28:15.5196085Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5196223Z               "line": 4228
2026-06-19T23:28:15.5196358Z             }
2026-06-19T23:28:15.5196485Z           ]
2026-06-19T23:28:15.5196615Z         },
2026-06-19T23:28:15.5196738Z         "int": {
2026-06-19T23:28:15.5196872Z           "complete": true,
2026-06-19T23:28:15.5197001Z           "evidence": [
2026-06-19T23:28:15.5197120Z             {
2026-06-19T23:28:15.5197302Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.5197429Z               "line": 49
2026-06-19T23:28:15.5197560Z             },
2026-06-19T23:28:15.5197678Z             {
2026-06-19T23:28:15.5197843Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.5197986Z               "line": 487
2026-06-19T23:28:15.5198108Z             }
2026-06-19T23:28:15.5198237Z           ]
2026-06-19T23:28:15.5198348Z         },
2026-06-19T23:28:15.5198475Z         "unit": {
2026-06-19T23:28:15.5198605Z           "complete": true,
2026-06-19T23:28:15.5198733Z           "evidence": [
2026-06-19T23:28:15.5198862Z             {
2026-06-19T23:28:15.5199081Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5199220Z               "line": 1553
2026-06-19T23:28:15.5199343Z             },
2026-06-19T23:28:15.5199486Z             {
2026-06-19T23:28:15.5199634Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5199763Z               "line": 10687
2026-06-19T23:28:15.5199996Z             }
2026-06-19T23:28:15.5200121Z           ]
2026-06-19T23:28:15.5200249Z         }
2026-06-19T23:28:15.5200369Z       }
2026-06-19T23:28:15.5200498Z     },
2026-06-19T23:28:15.5200630Z     {
2026-06-19T23:28:15.5200772Z       "id": "REQ-DAEMON-4",
2026-06-19T23:28:15.5200940Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-19T23:28:15.5201082Z       "requiredStages": [
2026-06-19T23:28:15.5201216Z         "impl",
2026-06-19T23:28:15.5201330Z         "unit",
2026-06-19T23:28:15.5201460Z         "int"
2026-06-19T23:28:15.5201579Z       ],
2026-06-19T23:28:15.5201703Z       "stages": {
2026-06-19T23:28:15.5201927Z         "doc": {
2026-06-19T23:28:15.5202066Z           "complete": false,
2026-06-19T23:28:15.5202194Z           "evidence": []
2026-06-19T23:28:15.5202317Z         },
2026-06-19T23:28:15.5202438Z         "impl": {
2026-06-19T23:28:15.5202580Z           "complete": true,
2026-06-19T23:28:15.5202715Z           "evidence": [
2026-06-19T23:28:15.5202837Z             {
2026-06-19T23:28:15.5203003Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5203145Z               "line": 464
2026-06-19T23:28:15.5203272Z             },
2026-06-19T23:28:15.5203407Z             {
2026-06-19T23:28:15.5203577Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5203717Z               "line": 529
2026-06-19T23:28:15.5203845Z             },
2026-06-19T23:28:15.5203969Z             {
2026-06-19T23:28:15.5204141Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5204264Z               "line": 551
2026-06-19T23:28:15.5204389Z             }
2026-06-19T23:28:15.5204516Z           ]
2026-06-19T23:28:15.5204647Z         },
2026-06-19T23:28:15.5204775Z         "int": {
2026-06-19T23:28:15.5204913Z           "complete": true,
2026-06-19T23:28:15.5205042Z           "evidence": [
2026-06-19T23:28:15.5205165Z             {
2026-06-19T23:28:15.5205357Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-19T23:28:15.5205495Z               "line": 42
2026-06-19T23:28:15.5205610Z             }
2026-06-19T23:28:15.5205742Z           ]
2026-06-19T23:28:15.5205865Z         },
2026-06-19T23:28:15.5205994Z         "unit": {
2026-06-19T23:28:15.5206130Z           "complete": true,
2026-06-19T23:28:15.5206254Z           "evidence": [
2026-06-19T23:28:15.5206378Z             {
2026-06-19T23:28:15.5206550Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.5206680Z               "line": 428
2026-06-19T23:28:15.5206807Z             },
2026-06-19T23:28:15.5206937Z             {
2026-06-19T23:28:15.5207112Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5207256Z               "line": 957
2026-06-19T23:28:15.5207379Z             },
2026-06-19T23:28:15.5207504Z             {
2026-06-19T23:28:15.5207680Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5207805Z               "line": 1027
2026-06-19T23:28:15.5207942Z             },
2026-06-19T23:28:15.5208062Z             {
2026-06-19T23:28:15.5208243Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5208370Z               "line": 1057
2026-06-19T23:28:15.5208504Z             },
2026-06-19T23:28:15.5208635Z             {
2026-06-19T23:28:15.5208802Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5208931Z               "line": 1090
2026-06-19T23:28:15.5209302Z             }
2026-06-19T23:28:15.5209437Z           ]
2026-06-19T23:28:15.5209560Z         }
2026-06-19T23:28:15.5209693Z       }
2026-06-19T23:28:15.5209818Z     },
2026-06-19T23:28:15.5209946Z     {
2026-06-19T23:28:15.5210091Z       "id": "REQ-DAEMON-5",
2026-06-19T23:28:15.5211547Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-19T23:28:15.5211810Z       "requiredStages": [
2026-06-19T23:28:15.5211938Z         "impl",
2026-06-19T23:28:15.5212058Z         "unit"
2026-06-19T23:28:15.5212181Z       ],
2026-06-19T23:28:15.5212316Z       "stages": {
2026-06-19T23:28:15.5212444Z         "doc": {
2026-06-19T23:28:15.5212587Z           "complete": false,
2026-06-19T23:28:15.5212716Z           "evidence": []
2026-06-19T23:28:15.5212844Z         },
2026-06-19T23:28:15.5212969Z         "impl": {
2026-06-19T23:28:15.5213212Z           "complete": true,
2026-06-19T23:28:15.5213346Z           "evidence": [
2026-06-19T23:28:15.5213468Z             {
2026-06-19T23:28:15.5213644Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5213775Z               "line": 476
2026-06-19T23:28:15.5213905Z             },
2026-06-19T23:28:15.5214030Z             {
2026-06-19T23:28:15.5214204Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5214338Z               "line": 769
2026-06-19T23:28:15.5214466Z             },
2026-06-19T23:28:15.5214582Z             {
2026-06-19T23:28:15.5214757Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5214897Z               "line": 782
2026-06-19T23:28:15.5215021Z             },
2026-06-19T23:28:15.5215139Z             {
2026-06-19T23:28:15.5215311Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5215439Z               "line": 800
2026-06-19T23:28:15.5215565Z             },
2026-06-19T23:28:15.5215698Z             {
2026-06-19T23:28:15.5215865Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5215997Z               "line": 841
2026-06-19T23:28:15.5216127Z             }
2026-06-19T23:28:15.5216246Z           ]
2026-06-19T23:28:15.5216378Z         },
2026-06-19T23:28:15.5216502Z         "int": {
2026-06-19T23:28:15.5216657Z           "complete": false,
2026-06-19T23:28:15.5216795Z           "evidence": []
2026-06-19T23:28:15.5216916Z         },
2026-06-19T23:28:15.5217048Z         "unit": {
2026-06-19T23:28:15.5217187Z           "complete": true,
2026-06-19T23:28:15.5217319Z           "evidence": [
2026-06-19T23:28:15.5217445Z             {
2026-06-19T23:28:15.5217615Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5217749Z               "line": 1189
2026-06-19T23:28:15.5217873Z             },
2026-06-19T23:28:15.5218006Z             {
2026-06-19T23:28:15.5218173Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5218326Z               "line": 1213
2026-06-19T23:28:15.5218451Z             },
2026-06-19T23:28:15.5218578Z             {
2026-06-19T23:28:15.5218747Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5218878Z               "line": 1239
2026-06-19T23:28:15.5219069Z             }
2026-06-19T23:28:15.5219190Z           ]
2026-06-19T23:28:15.5219314Z         }
2026-06-19T23:28:15.5219439Z       }
2026-06-19T23:28:15.5219557Z     },
2026-06-19T23:28:15.5219677Z     {
2026-06-19T23:28:15.5219806Z       "id": "REQ-DAEMON-6",
2026-06-19T23:28:15.5221893Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-19T23:28:15.5222051Z       "requiredStages": [
2026-06-19T23:28:15.5222179Z         "impl",
2026-06-19T23:28:15.5222417Z         "unit"
2026-06-19T23:28:15.5222542Z       ],
2026-06-19T23:28:15.5222671Z       "stages": {
2026-06-19T23:28:15.5222793Z         "doc": {
2026-06-19T23:28:15.5222923Z           "complete": false,
2026-06-19T23:28:15.5223052Z           "evidence": []
2026-06-19T23:28:15.5223166Z         },
2026-06-19T23:28:15.5223295Z         "impl": {
2026-06-19T23:28:15.5223428Z           "complete": true,
2026-06-19T23:28:15.5223572Z           "evidence": [
2026-06-19T23:28:15.5223695Z             {
2026-06-19T23:28:15.5223868Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5224014Z               "line": 495
2026-06-19T23:28:15.5224242Z             },
2026-06-19T23:28:15.5224364Z             {
2026-06-19T23:28:15.5224537Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5224669Z               "line": 526
2026-06-19T23:28:15.5224799Z             },
2026-06-19T23:28:15.5224923Z             {
2026-06-19T23:28:15.5225099Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5225232Z               "line": 55
2026-06-19T23:28:15.5225360Z             },
2026-06-19T23:28:15.5225486Z             {
2026-06-19T23:28:15.5225642Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5225767Z               "line": 70
2026-06-19T23:28:15.5225895Z             },
2026-06-19T23:28:15.5226019Z             {
2026-06-19T23:28:15.5226167Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5226300Z               "line": 1992
2026-06-19T23:28:15.5226411Z             },
2026-06-19T23:28:15.5226538Z             {
2026-06-19T23:28:15.5226697Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5226830Z               "line": 2018
2026-06-19T23:28:15.5226947Z             }
2026-06-19T23:28:15.5227071Z           ]
2026-06-19T23:28:15.5227198Z         },
2026-06-19T23:28:15.5227322Z         "int": {
2026-06-19T23:28:15.5227461Z           "complete": false,
2026-06-19T23:28:15.5227603Z           "evidence": []
2026-06-19T23:28:15.5227733Z         },
2026-06-19T23:28:15.5227865Z         "unit": {
2026-06-19T23:28:15.5227995Z           "complete": true,
2026-06-19T23:28:15.5228134Z           "evidence": [
2026-06-19T23:28:15.5228252Z             {
2026-06-19T23:28:15.5228423Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5228562Z               "line": 288
2026-06-19T23:28:15.5228687Z             },
2026-06-19T23:28:15.5228810Z             {
2026-06-19T23:28:15.5229044Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5229186Z               "line": 299
2026-06-19T23:28:15.5229312Z             },
2026-06-19T23:28:15.5229448Z             {
2026-06-19T23:28:15.5229619Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5229750Z               "line": 325
2026-06-19T23:28:15.5229879Z             },
2026-06-19T23:28:15.5230004Z             {
2026-06-19T23:28:15.5230184Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5230309Z               "line": 351
2026-06-19T23:28:15.5230427Z             }
2026-06-19T23:28:15.5230547Z           ]
2026-06-19T23:28:15.5230671Z         }
2026-06-19T23:28:15.5230799Z       }
2026-06-19T23:28:15.5230920Z     },
2026-06-19T23:28:15.5231047Z     {
2026-06-19T23:28:15.5231186Z       "id": "REQ-DAEMON-7",
2026-06-19T23:28:15.5232672Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-19T23:28:15.5232826Z       "requiredStages": [
2026-06-19T23:28:15.5232954Z         "impl",
2026-06-19T23:28:15.5233083Z         "unit"
2026-06-19T23:28:15.5233301Z       ],
2026-06-19T23:28:15.5233421Z       "stages": {
2026-06-19T23:28:15.5233559Z         "doc": {
2026-06-19T23:28:15.5233687Z           "complete": false,
2026-06-19T23:28:15.5233817Z           "evidence": []
2026-06-19T23:28:15.5233945Z         },
2026-06-19T23:28:15.5234076Z         "impl": {
2026-06-19T23:28:15.5234212Z           "complete": true,
2026-06-19T23:28:15.5234346Z           "evidence": [
2026-06-19T23:28:15.5234470Z             {
2026-06-19T23:28:15.5234636Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5234764Z               "line": 545
2026-06-19T23:28:15.5234887Z             },
2026-06-19T23:28:15.5235015Z             {
2026-06-19T23:28:15.5235306Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5235445Z               "line": 610
2026-06-19T23:28:15.5235572Z             },
2026-06-19T23:28:15.5235693Z             {
2026-06-19T23:28:15.5235864Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5236003Z               "line": 89
2026-06-19T23:28:15.5236131Z             },
2026-06-19T23:28:15.5236264Z             {
2026-06-19T23:28:15.5236412Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5236555Z               "line": 1929
2026-06-19T23:28:15.5236680Z             }
2026-06-19T23:28:15.5236808Z           ]
2026-06-19T23:28:15.5236933Z         },
2026-06-19T23:28:15.5237061Z         "int": {
2026-06-19T23:28:15.5237199Z           "complete": false,
2026-06-19T23:28:15.5237334Z           "evidence": []
2026-06-19T23:28:15.5237465Z         },
2026-06-19T23:28:15.5237589Z         "unit": {
2026-06-19T23:28:15.5237725Z           "complete": true,
2026-06-19T23:28:15.5237863Z           "evidence": [
2026-06-19T23:28:15.5237993Z             {
2026-06-19T23:28:15.5238163Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5238298Z               "line": 314
2026-06-19T23:28:15.5238426Z             },
2026-06-19T23:28:15.5238546Z             {
2026-06-19T23:28:15.5238717Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5238845Z               "line": 8074
2026-06-19T23:28:15.5239046Z             }
2026-06-19T23:28:15.5239175Z           ]
2026-06-19T23:28:15.5239299Z         }
2026-06-19T23:28:15.5239422Z       }
2026-06-19T23:28:15.5239533Z     },
2026-06-19T23:28:15.5239660Z     {
2026-06-19T23:28:15.5239785Z       "id": "REQ-DAEMON-8",
2026-06-19T23:28:15.5240812Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-19T23:28:15.5240968Z       "requiredStages": [
2026-06-19T23:28:15.5241098Z         "impl",
2026-06-19T23:28:15.5241221Z         "unit"
2026-06-19T23:28:15.5241350Z       ],
2026-06-19T23:28:15.5241480Z       "stages": {
2026-06-19T23:28:15.5241608Z         "doc": {
2026-06-19T23:28:15.5241747Z           "complete": false,
2026-06-19T23:28:15.5241884Z           "evidence": []
2026-06-19T23:28:15.5242004Z         },
2026-06-19T23:28:15.5242133Z         "impl": {
2026-06-19T23:28:15.5242261Z           "complete": true,
2026-06-19T23:28:15.5242395Z           "evidence": [
2026-06-19T23:28:15.5242518Z             {
2026-06-19T23:28:15.5242696Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5242823Z               "line": 445
2026-06-19T23:28:15.5242951Z             },
2026-06-19T23:28:15.5243071Z             {
2026-06-19T23:28:15.5243242Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5243386Z               "line": 56
2026-06-19T23:28:15.5243509Z             }
2026-06-19T23:28:15.5243633Z           ]
2026-06-19T23:28:15.5243757Z         },
2026-06-19T23:28:15.5243885Z         "int": {
2026-06-19T23:28:15.5244030Z           "complete": false,
2026-06-19T23:28:15.5244153Z           "evidence": []
2026-06-19T23:28:15.5244387Z         },
2026-06-19T23:28:15.5244515Z         "unit": {
2026-06-19T23:28:15.5244650Z           "complete": true,
2026-06-19T23:28:15.5244782Z           "evidence": [
2026-06-19T23:28:15.5244906Z             {
2026-06-19T23:28:15.5245072Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5245196Z               "line": 288
2026-06-19T23:28:15.5245329Z             },
2026-06-19T23:28:15.5245451Z             {
2026-06-19T23:28:15.5245614Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-19T23:28:15.5245742Z               "line": 325
2026-06-19T23:28:15.5245866Z             }
2026-06-19T23:28:15.5245991Z           ]
2026-06-19T23:28:15.5246209Z         }
2026-06-19T23:28:15.5246339Z       }
2026-06-19T23:28:15.5246457Z     },
2026-06-19T23:28:15.5246577Z     {
2026-06-19T23:28:15.5246911Z       "id": "REQ-DAEMON-9",
2026-06-19T23:28:15.5249553Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-19T23:28:15.5254503Z       "requiredStages": [
2026-06-19T23:28:15.5254661Z         "impl",
2026-06-19T23:28:15.5254784Z         "unit"
2026-06-19T23:28:15.5254915Z       ],
2026-06-19T23:28:15.5255047Z       "stages": {
2026-06-19T23:28:15.5255172Z         "doc": {
2026-06-19T23:28:15.5255323Z           "complete": false,
2026-06-19T23:28:15.5255476Z           "evidence": []
2026-06-19T23:28:15.5255600Z         },
2026-06-19T23:28:15.5255723Z         "impl": {
2026-06-19T23:28:15.5255861Z           "complete": true,
2026-06-19T23:28:15.5255992Z           "evidence": [
2026-06-19T23:28:15.5256111Z             {
2026-06-19T23:28:15.5256302Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5256436Z               "line": 276
2026-06-19T23:28:15.5256560Z             },
2026-06-19T23:28:15.5256688Z             {
2026-06-19T23:28:15.5256865Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5256993Z               "line": 993
2026-06-19T23:28:15.5257119Z             },
2026-06-19T23:28:15.5257242Z             {
2026-06-19T23:28:15.5257409Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5257532Z               "line": 197
2026-06-19T23:28:15.5257656Z             },
2026-06-19T23:28:15.5257786Z             {
2026-06-19T23:28:15.5257952Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5258092Z               "line": 344
2026-06-19T23:28:15.5258219Z             },
2026-06-19T23:28:15.5258344Z             {
2026-06-19T23:28:15.5258510Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5258642Z               "line": 381
2026-06-19T23:28:15.5258771Z             },
2026-06-19T23:28:15.5258893Z             {
2026-06-19T23:28:15.5259132Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5259259Z               "line": 2047
2026-06-19T23:28:15.5259384Z             }
2026-06-19T23:28:15.5259508Z           ]
2026-06-19T23:28:15.5259632Z         },
2026-06-19T23:28:15.5259766Z         "int": {
2026-06-19T23:28:15.5259908Z           "complete": false,
2026-06-19T23:28:15.5260047Z           "evidence": []
2026-06-19T23:28:15.5260171Z         },
2026-06-19T23:28:15.5260295Z         "unit": {
2026-06-19T23:28:15.5260428Z           "complete": true,
2026-06-19T23:28:15.5260566Z           "evidence": [
2026-06-19T23:28:15.5260857Z             {
2026-06-19T23:28:15.5261030Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5261171Z               "line": 1158
2026-06-19T23:28:15.5261295Z             },
2026-06-19T23:28:15.5261417Z             {
2026-06-19T23:28:15.5261564Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5261699Z               "line": 10552
2026-06-19T23:28:15.5261826Z             }
2026-06-19T23:28:15.5261942Z           ]
2026-06-19T23:28:15.5262066Z         }
2026-06-19T23:28:15.5262184Z       }
2026-06-19T23:28:15.5262299Z     },
2026-06-19T23:28:15.5262423Z     {
2026-06-19T23:28:15.5262552Z       "id": "REQ-DOCS-1",
2026-06-19T23:28:15.5262915Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-19T23:28:15.5263048Z       "requiredStages": [
2026-06-19T23:28:15.5263172Z         "doc",
2026-06-19T23:28:15.5263300Z         "impl"
2026-06-19T23:28:15.5263414Z       ],
2026-06-19T23:28:15.5263544Z       "stages": {
2026-06-19T23:28:15.5263681Z         "doc": {
2026-06-19T23:28:15.5263812Z           "complete": true,
2026-06-19T23:28:15.5263939Z           "evidence": [
2026-06-19T23:28:15.5264071Z             {
2026-06-19T23:28:15.5264220Z               "path": "docs-site/src/index.md",
2026-06-19T23:28:15.5264352Z               "line": 50
2026-06-19T23:28:15.5264472Z             }
2026-06-19T23:28:15.5264592Z           ]
2026-06-19T23:28:15.5264710Z         },
2026-06-19T23:28:15.5264826Z         "impl": {
2026-06-19T23:28:15.5264968Z           "complete": true,
2026-06-19T23:28:15.5265102Z           "evidence": [
2026-06-19T23:28:15.5265235Z             {
2026-06-19T23:28:15.5265422Z               "path": ".github/workflows/docs-publish.yml",
2026-06-19T23:28:15.5265559Z               "line": 12
2026-06-19T23:28:15.5265688Z             },
2026-06-19T23:28:15.5265813Z             {
2026-06-19T23:28:15.5265974Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.5266099Z               "line": 14
2026-06-19T23:28:15.5266236Z             }
2026-06-19T23:28:15.5266349Z           ]
2026-06-19T23:28:15.5266478Z         },
2026-06-19T23:28:15.5266600Z         "int": {
2026-06-19T23:28:15.5266734Z           "complete": false,
2026-06-19T23:28:15.5266872Z           "evidence": []
2026-06-19T23:28:15.5266981Z         },
2026-06-19T23:28:15.5267111Z         "unit": {
2026-06-19T23:28:15.5267243Z           "complete": false,
2026-06-19T23:28:15.5267378Z           "evidence": []
2026-06-19T23:28:15.5267497Z         }
2026-06-19T23:28:15.5267615Z       }
2026-06-19T23:28:15.5267740Z     },
2026-06-19T23:28:15.5267863Z     {
2026-06-19T23:28:15.5267988Z       "id": "REQ-DOCS-2",
2026-06-19T23:28:15.5268202Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-19T23:28:15.5268342Z       "requiredStages": [
2026-06-19T23:28:15.5268454Z         "doc",
2026-06-19T23:28:15.5268579Z         "int"
2026-06-19T23:28:15.5268708Z       ],
2026-06-19T23:28:15.5268832Z       "stages": {
2026-06-19T23:28:15.5269051Z         "doc": {
2026-06-19T23:28:15.5269174Z           "complete": true,
2026-06-19T23:28:15.5269312Z           "evidence": [
2026-06-19T23:28:15.5269434Z             {
2026-06-19T23:28:15.5269659Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-19T23:28:15.5269782Z               "line": 3
2026-06-19T23:28:15.5269901Z             },
2026-06-19T23:28:15.5270026Z             {
2026-06-19T23:28:15.5270197Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-19T23:28:15.5270326Z               "line": 3
2026-06-19T23:28:15.5270449Z             },
2026-06-19T23:28:15.5270570Z             {
2026-06-19T23:28:15.5270764Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-19T23:28:15.5270894Z               "line": 3
2026-06-19T23:28:15.5271012Z             }
2026-06-19T23:28:15.5271131Z           ]
2026-06-19T23:28:15.5271256Z         },
2026-06-19T23:28:15.5271379Z         "impl": {
2026-06-19T23:28:15.5271519Z           "complete": false,
2026-06-19T23:28:15.5271759Z           "evidence": []
2026-06-19T23:28:15.5271883Z         },
2026-06-19T23:28:15.5272010Z         "int": {
2026-06-19T23:28:15.5272139Z           "complete": true,
2026-06-19T23:28:15.5272278Z           "evidence": [
2026-06-19T23:28:15.5272405Z             {
2026-06-19T23:28:15.5272573Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-19T23:28:15.5272696Z               "line": 14
2026-06-19T23:28:15.5272807Z             }
2026-06-19T23:28:15.5272931Z           ]
2026-06-19T23:28:15.5273049Z         },
2026-06-19T23:28:15.5273169Z         "unit": {
2026-06-19T23:28:15.5273293Z           "complete": false,
2026-06-19T23:28:15.5273532Z           "evidence": []
2026-06-19T23:28:15.5273659Z         }
2026-06-19T23:28:15.5273771Z       }
2026-06-19T23:28:15.5273889Z     },
2026-06-19T23:28:15.5274008Z     {
2026-06-19T23:28:15.5274147Z       "id": "REQ-DOCS-3",
2026-06-19T23:28:15.5274453Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-19T23:28:15.5274593Z       "requiredStages": [
2026-06-19T23:28:15.5274718Z         "doc"
2026-06-19T23:28:15.5274842Z       ],
2026-06-19T23:28:15.5274970Z       "stages": {
2026-06-19T23:28:15.5275095Z         "doc": {
2026-06-19T23:28:15.5275232Z           "complete": true,
2026-06-19T23:28:15.5275362Z           "evidence": [
2026-06-19T23:28:15.5275476Z             {
2026-06-19T23:28:15.5275638Z               "path": "docs-site/src/index.md",
2026-06-19T23:28:15.5275767Z               "line": 42
2026-06-19T23:28:15.5275894Z             }
2026-06-19T23:28:15.5276015Z           ]
2026-06-19T23:28:15.5276138Z         },
2026-06-19T23:28:15.5276272Z         "impl": {
2026-06-19T23:28:15.5276420Z           "complete": false,
2026-06-19T23:28:15.5276548Z           "evidence": []
2026-06-19T23:28:15.5276674Z         },
2026-06-19T23:28:15.5276805Z         "int": {
2026-06-19T23:28:15.5276939Z           "complete": false,
2026-06-19T23:28:15.5277071Z           "evidence": []
2026-06-19T23:28:15.5277203Z         },
2026-06-19T23:28:15.5277328Z         "unit": {
2026-06-19T23:28:15.5277460Z           "complete": false,
2026-06-19T23:28:15.5277589Z           "evidence": []
2026-06-19T23:28:15.5277719Z         }
2026-06-19T23:28:15.5277837Z       }
2026-06-19T23:28:15.5277962Z     },
2026-06-19T23:28:15.5278085Z     {
2026-06-19T23:28:15.5278210Z       "id": "REQ-DOCS-4",
2026-06-19T23:28:15.5278461Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-19T23:28:15.5278587Z       "requiredStages": [
2026-06-19T23:28:15.5278710Z         "doc",
2026-06-19T23:28:15.5278839Z         "impl",
2026-06-19T23:28:15.5279014Z         "unit"
2026-06-19T23:28:15.5279139Z       ],
2026-06-19T23:28:15.5279268Z       "stages": {
2026-06-19T23:28:15.5279396Z         "doc": {
2026-06-19T23:28:15.5279527Z           "complete": true,
2026-06-19T23:28:15.5279648Z           "evidence": [
2026-06-19T23:28:15.5279776Z             {
2026-06-19T23:28:15.5279933Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-19T23:28:15.5280074Z               "line": 35
2026-06-19T23:28:15.5280185Z             }
2026-06-19T23:28:15.5280308Z           ]
2026-06-19T23:28:15.5280432Z         },
2026-06-19T23:28:15.5280557Z         "impl": {
2026-06-19T23:28:15.5280690Z           "complete": true,
2026-06-19T23:28:15.5280815Z           "evidence": [
2026-06-19T23:28:15.5280943Z             {
2026-06-19T23:28:15.5281115Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.5281253Z               "line": 735
2026-06-19T23:28:15.5281372Z             },
2026-06-19T23:28:15.5281492Z             {
2026-06-19T23:28:15.5281648Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.5281779Z               "line": 15
2026-06-19T23:28:15.5281906Z             }
2026-06-19T23:28:15.5282021Z           ]
2026-06-19T23:28:15.5282145Z         },
2026-06-19T23:28:15.5282263Z         "int": {
2026-06-19T23:28:15.5282406Z           "complete": false,
2026-06-19T23:28:15.5282537Z           "evidence": []
2026-06-19T23:28:15.5282766Z         },
2026-06-19T23:28:15.5282895Z         "unit": {
2026-06-19T23:28:15.5283033Z           "complete": true,
2026-06-19T23:28:15.5283157Z           "evidence": [
2026-06-19T23:28:15.5283280Z             {
2026-06-19T23:28:15.5283476Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.5283629Z               "line": 1590
2026-06-19T23:28:15.5283763Z             }
2026-06-19T23:28:15.5283886Z           ]
2026-06-19T23:28:15.5284011Z         }
2026-06-19T23:28:15.5284134Z       }
2026-06-19T23:28:15.5284253Z     },
2026-06-19T23:28:15.5284378Z     {
2026-06-19T23:28:15.5284511Z       "id": "REQ-DOCS-5",
2026-06-19T23:28:15.5284868Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-19T23:28:15.5285013Z       "requiredStages": [
2026-06-19T23:28:15.5285139Z         "impl",
2026-06-19T23:28:15.5285263Z         "int"
2026-06-19T23:28:15.5285379Z       ],
2026-06-19T23:28:15.5285506Z       "stages": {
2026-06-19T23:28:15.5285641Z         "doc": {
2026-06-19T23:28:15.5285783Z           "complete": false,
2026-06-19T23:28:15.5285913Z           "evidence": []
2026-06-19T23:28:15.5286031Z         },
2026-06-19T23:28:15.5286164Z         "impl": {
2026-06-19T23:28:15.5286289Z           "complete": true,
2026-06-19T23:28:15.5286422Z           "evidence": [
2026-06-19T23:28:15.5286542Z             {
2026-06-19T23:28:15.5286723Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.5286852Z               "line": 736
2026-06-19T23:28:15.5286971Z             },
2026-06-19T23:28:15.5287089Z             {
2026-06-19T23:28:15.5287239Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.5287384Z               "line": 113
2026-06-19T23:28:15.5287494Z             }
2026-06-19T23:28:15.5287626Z           ]
2026-06-19T23:28:15.5287744Z         },
2026-06-19T23:28:15.5287863Z         "int": {
2026-06-19T23:28:15.5287992Z           "complete": true,
2026-06-19T23:28:15.5288130Z           "evidence": [
2026-06-19T23:28:15.5288254Z             {
2026-06-19T23:28:15.5288407Z               "path": ".github/workflows/ci.yml",
2026-06-19T23:28:15.5288532Z               "line": 126
2026-06-19T23:28:15.5288659Z             },
2026-06-19T23:28:15.5288784Z             {
2026-06-19T23:28:15.5289036Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.5289161Z               "line": 1627
2026-06-19T23:28:15.5289275Z             }
2026-06-19T23:28:15.5289399Z           ]
2026-06-19T23:28:15.5289528Z         },
2026-06-19T23:28:15.5289656Z         "unit": {
2026-06-19T23:28:15.5289782Z           "complete": false,
2026-06-19T23:28:15.5289923Z           "evidence": []
2026-06-19T23:28:15.5290048Z         }
2026-06-19T23:28:15.5290172Z       }
2026-06-19T23:28:15.5290290Z     },
2026-06-19T23:28:15.5290404Z     {
2026-06-19T23:28:15.5290544Z       "id": "REQ-DOCS-6",
2026-06-19T23:28:15.5290921Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-19T23:28:15.5291065Z       "requiredStages": [
2026-06-19T23:28:15.5291184Z         "impl",
2026-06-19T23:28:15.5291307Z         "unit",
2026-06-19T23:28:15.5291422Z         "int"
2026-06-19T23:28:15.5291545Z       ],
2026-06-19T23:28:15.5291670Z       "stages": {
2026-06-19T23:28:15.5291789Z         "doc": {
2026-06-19T23:28:15.5291932Z           "complete": true,
2026-06-19T23:28:15.5292061Z           "evidence": [
2026-06-19T23:28:15.5292175Z             {
2026-06-19T23:28:15.5292348Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-19T23:28:15.5292480Z               "line": 4
2026-06-19T23:28:15.5292610Z             }
2026-06-19T23:28:15.5292724Z           ]
2026-06-19T23:28:15.5292851Z         },
2026-06-19T23:28:15.5292966Z         "impl": {
2026-06-19T23:28:15.5293097Z           "complete": true,
2026-06-19T23:28:15.5293225Z           "evidence": [
2026-06-19T23:28:15.5293341Z             {
2026-06-19T23:28:15.5293608Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5293732Z               "line": 5212
2026-06-19T23:28:15.5293859Z             }
2026-06-19T23:28:15.5293979Z           ]
2026-06-19T23:28:15.5294103Z         },
2026-06-19T23:28:15.5294228Z         "int": {
2026-06-19T23:28:15.5294365Z           "complete": true,
2026-06-19T23:28:15.5294494Z           "evidence": [
2026-06-19T23:28:15.5294609Z             {
2026-06-19T23:28:15.5294780Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-19T23:28:15.5294905Z               "line": 39
2026-06-19T23:28:15.5295018Z             }
2026-06-19T23:28:15.5295143Z           ]
2026-06-19T23:28:15.5295381Z         },
2026-06-19T23:28:15.5295511Z         "unit": {
2026-06-19T23:28:15.5295647Z           "complete": true,
2026-06-19T23:28:15.5295775Z           "evidence": [
2026-06-19T23:28:15.5295901Z             {
2026-06-19T23:28:15.5296052Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5296181Z               "line": 10714
2026-06-19T23:28:15.5296338Z             }
2026-06-19T23:28:15.5296463Z           ]
2026-06-19T23:28:15.5296587Z         }
2026-06-19T23:28:15.5296700Z       }
2026-06-19T23:28:15.5296821Z     },
2026-06-19T23:28:15.5296944Z     {
2026-06-19T23:28:15.5297087Z       "id": "REQ-ELEVATE-1",
2026-06-19T23:28:15.5300599Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-19T23:28:15.5300769Z       "requiredStages": [
2026-06-19T23:28:15.5300896Z         "doc",
2026-06-19T23:28:15.5301021Z         "impl",
2026-06-19T23:28:15.5301143Z         "unit"
2026-06-19T23:28:15.5301262Z       ],
2026-06-19T23:28:15.5301392Z       "stages": {
2026-06-19T23:28:15.5301519Z         "doc": {
2026-06-19T23:28:15.5301658Z           "complete": true,
2026-06-19T23:28:15.5301791Z           "evidence": [
2026-06-19T23:28:15.5301916Z             {
2026-06-19T23:28:15.5302059Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.5302177Z               "line": 687
2026-06-19T23:28:15.5302307Z             }
2026-06-19T23:28:15.5302435Z           ]
2026-06-19T23:28:15.5302555Z         },
2026-06-19T23:28:15.5302687Z         "impl": {
2026-06-19T23:28:15.5302821Z           "complete": true,
2026-06-19T23:28:15.5303030Z           "evidence": [
2026-06-19T23:28:15.5303194Z             {
2026-06-19T23:28:15.5303355Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5303521Z               "line": 3544
2026-06-19T23:28:15.5303666Z             },
2026-06-19T23:28:15.5303795Z             {
2026-06-19T23:28:15.5303953Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5304085Z               "line": 3589
2026-06-19T23:28:15.5304239Z             },
2026-06-19T23:28:15.5304367Z             {
2026-06-19T23:28:15.5304530Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5304658Z               "line": 3651
2026-06-19T23:28:15.5304783Z             },
2026-06-19T23:28:15.5304916Z             {
2026-06-19T23:28:15.5305078Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.5305207Z               "line": 92
2026-06-19T23:28:15.5305446Z             },
2026-06-19T23:28:15.5305569Z             {
2026-06-19T23:28:15.5305727Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.5305850Z               "line": 148
2026-06-19T23:28:15.5305979Z             }
2026-06-19T23:28:15.5306100Z           ]
2026-06-19T23:28:15.5306226Z         },
2026-06-19T23:28:15.5306360Z         "int": {
2026-06-19T23:28:15.5306494Z           "complete": false,
2026-06-19T23:28:15.5306635Z           "evidence": []
2026-06-19T23:28:15.5306766Z         },
2026-06-19T23:28:15.5306903Z         "unit": {
2026-06-19T23:28:15.5307057Z           "complete": true,
2026-06-19T23:28:15.5307294Z           "evidence": [
2026-06-19T23:28:15.5307414Z             {
2026-06-19T23:28:15.5307580Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.5307705Z               "line": 442
2026-06-19T23:28:15.5307833Z             },
2026-06-19T23:28:15.5307948Z             {
2026-06-19T23:28:15.5308114Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.5308253Z               "line": 460
2026-06-19T23:28:15.5308387Z             }
2026-06-19T23:28:15.5308514Z           ]
2026-06-19T23:28:15.5308638Z         }
2026-06-19T23:28:15.5308765Z       }
2026-06-19T23:28:15.5308888Z     },
2026-06-19T23:28:15.5309108Z     {
2026-06-19T23:28:15.5309260Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-19T23:28:15.5311120Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-19T23:28:15.5311269Z       "requiredStages": [
2026-06-19T23:28:15.5311400Z         "doc",
2026-06-19T23:28:15.5311529Z         "impl",
2026-06-19T23:28:15.5311660Z         "unit"
2026-06-19T23:28:15.5311783Z       ],
2026-06-19T23:28:15.5311904Z       "stages": {
2026-06-19T23:28:15.5312031Z         "doc": {
2026-06-19T23:28:15.5312171Z           "complete": true,
2026-06-19T23:28:15.5312300Z           "evidence": [
2026-06-19T23:28:15.5312462Z             {
2026-06-19T23:28:15.5312600Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.5312728Z               "line": 711
2026-06-19T23:28:15.5312848Z             }
2026-06-19T23:28:15.5312976Z           ]
2026-06-19T23:28:15.5313101Z         },
2026-06-19T23:28:15.5313229Z         "impl": {
2026-06-19T23:28:15.5313367Z           "complete": true,
2026-06-19T23:28:15.5313502Z           "evidence": [
2026-06-19T23:28:15.5313620Z             {
2026-06-19T23:28:15.5313778Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5313915Z               "line": 1693
2026-06-19T23:28:15.5314038Z             },
2026-06-19T23:28:15.5314162Z             {
2026-06-19T23:28:15.5314322Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5314456Z               "line": 3097
2026-06-19T23:28:15.5314584Z             },
2026-06-19T23:28:15.5314713Z             {
2026-06-19T23:28:15.5314861Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5314994Z               "line": 3106
2026-06-19T23:28:15.5315109Z             }
2026-06-19T23:28:15.5315232Z           ]
2026-06-19T23:28:15.5315367Z         },
2026-06-19T23:28:15.5315490Z         "int": {
2026-06-19T23:28:15.5315648Z           "complete": false,
2026-06-19T23:28:15.5315776Z           "evidence": []
2026-06-19T23:28:15.5315905Z         },
2026-06-19T23:28:15.5316030Z         "unit": {
2026-06-19T23:28:15.5316172Z           "complete": true,
2026-06-19T23:28:15.5316311Z           "evidence": [
2026-06-19T23:28:15.5316438Z             {
2026-06-19T23:28:15.5316707Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5316829Z               "line": 7922
2026-06-19T23:28:15.5316958Z             },
2026-06-19T23:28:15.5317082Z             {
2026-06-19T23:28:15.5317234Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5317368Z               "line": 7963
2026-06-19T23:28:15.5317492Z             }
2026-06-19T23:28:15.5317617Z           ]
2026-06-19T23:28:15.5317740Z         }
2026-06-19T23:28:15.5317859Z       }
2026-06-19T23:28:15.5317983Z     },
2026-06-19T23:28:15.5318102Z     {
2026-06-19T23:28:15.5318261Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-19T23:28:15.5323193Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-19T23:28:15.5323488Z       "requiredStages": [
2026-06-19T23:28:15.5323617Z         "doc",
2026-06-19T23:28:15.5323747Z         "impl",
2026-06-19T23:28:15.5323875Z         "unit",
2026-06-19T23:28:15.5323995Z         "int"
2026-06-19T23:28:15.5324118Z       ],
2026-06-19T23:28:15.5324242Z       "stages": {
2026-06-19T23:28:15.5324372Z         "doc": {
2026-06-19T23:28:15.5324498Z           "complete": true,
2026-06-19T23:28:15.5324632Z           "evidence": [
2026-06-19T23:28:15.5324759Z             {
2026-06-19T23:28:15.5324901Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.5325040Z               "line": 163
2026-06-19T23:28:15.5325158Z             }
2026-06-19T23:28:15.5325288Z           ]
2026-06-19T23:28:15.5325408Z         },
2026-06-19T23:28:15.5325540Z         "impl": {
2026-06-19T23:28:15.5325674Z           "complete": true,
2026-06-19T23:28:15.5325797Z           "evidence": [
2026-06-19T23:28:15.5325927Z             {
2026-06-19T23:28:15.5326112Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.5326247Z               "line": 105
2026-06-19T23:28:15.5326375Z             },
2026-06-19T23:28:15.5326499Z             {
2026-06-19T23:28:15.5326656Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5326785Z               "line": 7191
2026-06-19T23:28:15.5326915Z             }
2026-06-19T23:28:15.5327032Z           ]
2026-06-19T23:28:15.5327158Z         },
2026-06-19T23:28:15.5327286Z         "int": {
2026-06-19T23:28:15.5327432Z           "complete": true,
2026-06-19T23:28:15.5327571Z           "evidence": [
2026-06-19T23:28:15.5327694Z             {
2026-06-19T23:28:15.5327852Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5327990Z               "line": 7356
2026-06-19T23:28:15.5328114Z             }
2026-06-19T23:28:15.5328229Z           ]
2026-06-19T23:28:15.5328453Z         },
2026-06-19T23:28:15.5328577Z         "unit": {
2026-06-19T23:28:15.5328715Z           "complete": true,
2026-06-19T23:28:15.5328845Z           "evidence": [
2026-06-19T23:28:15.5329039Z             {
2026-06-19T23:28:15.5329187Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5329315Z               "line": 7327
2026-06-19T23:28:15.5329446Z             }
2026-06-19T23:28:15.5329573Z           ]
2026-06-19T23:28:15.5329691Z         }
2026-06-19T23:28:15.5329815Z       }
2026-06-19T23:28:15.5329937Z     },
2026-06-19T23:28:15.5330061Z     {
2026-06-19T23:28:15.5330209Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-19T23:28:15.5331726Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-19T23:28:15.5331878Z       "requiredStages": [
2026-06-19T23:28:15.5332003Z         "impl",
2026-06-19T23:28:15.5332125Z         "unit"
2026-06-19T23:28:15.5332245Z       ],
2026-06-19T23:28:15.5332379Z       "stages": {
2026-06-19T23:28:15.5332515Z         "doc": {
2026-06-19T23:28:15.5332645Z           "complete": false,
2026-06-19T23:28:15.5332776Z           "evidence": []
2026-06-19T23:28:15.5332899Z         },
2026-06-19T23:28:15.5333024Z         "impl": {
2026-06-19T23:28:15.5333152Z           "complete": true,
2026-06-19T23:28:15.5333291Z           "evidence": [
2026-06-19T23:28:15.5333420Z             {
2026-06-19T23:28:15.5333572Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5333696Z               "line": 3137
2026-06-19T23:28:15.5333819Z             }
2026-06-19T23:28:15.5333939Z           ]
2026-06-19T23:28:15.5334058Z         },
2026-06-19T23:28:15.5334187Z         "int": {
2026-06-19T23:28:15.5334326Z           "complete": false,
2026-06-19T23:28:15.5334458Z           "evidence": []
2026-06-19T23:28:15.5334583Z         },
2026-06-19T23:28:15.5334706Z         "unit": {
2026-06-19T23:28:15.5334836Z           "complete": true,
2026-06-19T23:28:15.5334965Z           "evidence": [
2026-06-19T23:28:15.5335082Z             {
2026-06-19T23:28:15.5335244Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5335375Z               "line": 7303
2026-06-19T23:28:15.5335495Z             }
2026-06-19T23:28:15.5335620Z           ]
2026-06-19T23:28:15.5335747Z         }
2026-06-19T23:28:15.5335863Z       }
2026-06-19T23:28:15.5335996Z     },
2026-06-19T23:28:15.5336119Z     {
2026-06-19T23:28:15.5336248Z       "id": "REQ-EP-1",
2026-06-19T23:28:15.5336434Z       "title": "Day-one endpoint types; open type system",
2026-06-19T23:28:15.5336568Z       "requiredStages": [
2026-06-19T23:28:15.5336696Z         "impl",
2026-06-19T23:28:15.5336831Z         "unit"
2026-06-19T23:28:15.5336959Z       ],
2026-06-19T23:28:15.5337093Z       "stages": {
2026-06-19T23:28:15.5337221Z         "doc": {
2026-06-19T23:28:15.5337354Z           "complete": false,
2026-06-19T23:28:15.5337485Z           "evidence": []
2026-06-19T23:28:15.5337612Z         },
2026-06-19T23:28:15.5337737Z         "impl": {
2026-06-19T23:28:15.5337865Z           "complete": true,
2026-06-19T23:28:15.5338002Z           "evidence": [
2026-06-19T23:28:15.5338122Z             {
2026-06-19T23:28:15.5338297Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5338422Z               "line": 77
2026-06-19T23:28:15.5338550Z             },
2026-06-19T23:28:15.5338679Z             {
2026-06-19T23:28:15.5338847Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5339071Z               "line": 94
2026-06-19T23:28:15.5339194Z             }
2026-06-19T23:28:15.5339328Z           ]
2026-06-19T23:28:15.5339451Z         },
2026-06-19T23:28:15.5339575Z         "int": {
2026-06-19T23:28:15.5339823Z           "complete": false,
2026-06-19T23:28:15.5339952Z           "evidence": []
2026-06-19T23:28:15.5340077Z         },
2026-06-19T23:28:15.5340195Z         "unit": {
2026-06-19T23:28:15.5340328Z           "complete": true,
2026-06-19T23:28:15.5340454Z           "evidence": [
2026-06-19T23:28:15.5340582Z             {
2026-06-19T23:28:15.5340751Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5340882Z               "line": 161
2026-06-19T23:28:15.5341003Z             },
2026-06-19T23:28:15.5341131Z             {
2026-06-19T23:28:15.5341304Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5341556Z               "line": 178
2026-06-19T23:28:15.5341685Z             }
2026-06-19T23:28:15.5341808Z           ]
2026-06-19T23:28:15.5341933Z         }
2026-06-19T23:28:15.5342057Z       }
2026-06-19T23:28:15.5342175Z     },
2026-06-19T23:28:15.5342291Z     {
2026-06-19T23:28:15.5342419Z       "id": "REQ-EP-2",
2026-06-19T23:28:15.5342657Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-19T23:28:15.5342795Z       "requiredStages": [
2026-06-19T23:28:15.5342920Z         "impl",
2026-06-19T23:28:15.5343052Z         "unit"
2026-06-19T23:28:15.5343171Z       ],
2026-06-19T23:28:15.5343298Z       "stages": {
2026-06-19T23:28:15.5343421Z         "doc": {
2026-06-19T23:28:15.5343555Z           "complete": false,
2026-06-19T23:28:15.5343689Z           "evidence": []
2026-06-19T23:28:15.5343817Z         },
2026-06-19T23:28:15.5343937Z         "impl": {
2026-06-19T23:28:15.5344069Z           "complete": true,
2026-06-19T23:28:15.5344204Z           "evidence": [
2026-06-19T23:28:15.5344327Z             {
2026-06-19T23:28:15.5344504Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5344642Z               "line": 114
2026-06-19T23:28:15.5344766Z             },
2026-06-19T23:28:15.5344895Z             {
2026-06-19T23:28:15.5345067Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5345201Z               "line": 131
2026-06-19T23:28:15.5345324Z             },
2026-06-19T23:28:15.5345445Z             {
2026-06-19T23:28:15.5345618Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5345752Z               "line": 138
2026-06-19T23:28:15.5345875Z             }
2026-06-19T23:28:15.5345997Z           ]
2026-06-19T23:28:15.5346122Z         },
2026-06-19T23:28:15.5346246Z         "int": {
2026-06-19T23:28:15.5346379Z           "complete": false,
2026-06-19T23:28:15.5346508Z           "evidence": []
2026-06-19T23:28:15.5346636Z         },
2026-06-19T23:28:15.5346761Z         "unit": {
2026-06-19T23:28:15.5346908Z           "complete": true,
2026-06-19T23:28:15.5347043Z           "evidence": [
2026-06-19T23:28:15.5347165Z             {
2026-06-19T23:28:15.5347338Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5347457Z               "line": 190
2026-06-19T23:28:15.5347590Z             },
2026-06-19T23:28:15.5347725Z             {
2026-06-19T23:28:15.5347886Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5348016Z               "line": 208
2026-06-19T23:28:15.5348138Z             },
2026-06-19T23:28:15.5348263Z             {
2026-06-19T23:28:15.5348425Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-19T23:28:15.5348557Z               "line": 221
2026-06-19T23:28:15.5348687Z             }
2026-06-19T23:28:15.5348810Z           ]
2026-06-19T23:28:15.5349030Z         }
2026-06-19T23:28:15.5349148Z       }
2026-06-19T23:28:15.5349283Z     },
2026-06-19T23:28:15.5349407Z     {
2026-06-19T23:28:15.5349568Z       "id": "REQ-EP-3",
2026-06-19T23:28:15.5349806Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-19T23:28:15.5349936Z       "requiredStages": [
2026-06-19T23:28:15.5350069Z         "impl",
2026-06-19T23:28:15.5350178Z         "unit"
2026-06-19T23:28:15.5350303Z       ],
2026-06-19T23:28:15.5350426Z       "stages": {
2026-06-19T23:28:15.5350660Z         "doc": {
2026-06-19T23:28:15.5350792Z           "complete": false,
2026-06-19T23:28:15.5350921Z           "evidence": []
2026-06-19T23:28:15.5351043Z         },
2026-06-19T23:28:15.5351167Z         "impl": {
2026-06-19T23:28:15.5351297Z           "complete": true,
2026-06-19T23:28:15.5351419Z           "evidence": [
2026-06-19T23:28:15.5351549Z             {
2026-06-19T23:28:15.5351729Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5351855Z               "line": 31
2026-06-19T23:28:15.5351982Z             },
2026-06-19T23:28:15.5352106Z             {
2026-06-19T23:28:15.5352283Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5352517Z               "line": 49
2026-06-19T23:28:15.5352636Z             }
2026-06-19T23:28:15.5352765Z           ]
2026-06-19T23:28:15.5352874Z         },
2026-06-19T23:28:15.5353002Z         "int": {
2026-06-19T23:28:15.5353128Z           "complete": false,
2026-06-19T23:28:15.5353264Z           "evidence": []
2026-06-19T23:28:15.5353390Z         },
2026-06-19T23:28:15.5353509Z         "unit": {
2026-06-19T23:28:15.5353655Z           "complete": true,
2026-06-19T23:28:15.5353784Z           "evidence": [
2026-06-19T23:28:15.5353915Z             {
2026-06-19T23:28:15.5357845Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5358017Z               "line": 156
2026-06-19T23:28:15.5358145Z             },
2026-06-19T23:28:15.5358270Z             {
2026-06-19T23:28:15.5358465Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5358590Z               "line": 164
2026-06-19T23:28:15.5358717Z             },
2026-06-19T23:28:15.5358867Z             {
2026-06-19T23:28:15.5359112Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5359252Z               "line": 177
2026-06-19T23:28:15.5359393Z             },
2026-06-19T23:28:15.5359518Z             {
2026-06-19T23:28:15.5359685Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5359819Z               "line": 200
2026-06-19T23:28:15.5359952Z             },
2026-06-19T23:28:15.5360070Z             {
2026-06-19T23:28:15.5360234Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5360371Z               "line": 216
2026-06-19T23:28:15.5360491Z             },
2026-06-19T23:28:15.5360634Z             {
2026-06-19T23:28:15.5360801Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-19T23:28:15.5360929Z               "line": 233
2026-06-19T23:28:15.5361039Z             }
2026-06-19T23:28:15.5361164Z           ]
2026-06-19T23:28:15.5361281Z         }
2026-06-19T23:28:15.5361395Z       }
2026-06-19T23:28:15.5361529Z     },
2026-06-19T23:28:15.5361651Z     {
2026-06-19T23:28:15.5361784Z       "id": "REQ-EP-4",
2026-06-19T23:28:15.5361979Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-19T23:28:15.5362114Z       "requiredStages": [
2026-06-19T23:28:15.5362246Z         "impl",
2026-06-19T23:28:15.5362376Z         "unit"
2026-06-19T23:28:15.5362504Z       ],
2026-06-19T23:28:15.5362633Z       "stages": {
2026-06-19T23:28:15.5362758Z         "doc": {
2026-06-19T23:28:15.5362895Z           "complete": false,
2026-06-19T23:28:15.5363020Z           "evidence": []
2026-06-19T23:28:15.5363143Z         },
2026-06-19T23:28:15.5363267Z         "impl": {
2026-06-19T23:28:15.5363402Z           "complete": true,
2026-06-19T23:28:15.5363529Z           "evidence": [
2026-06-19T23:28:15.5363659Z             {
2026-06-19T23:28:15.5363824Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5363960Z               "line": 718
2026-06-19T23:28:15.5364078Z             },
2026-06-19T23:28:15.5364210Z             {
2026-06-19T23:28:15.5364368Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5364508Z               "line": 1079
2026-06-19T23:28:15.5364642Z             },
2026-06-19T23:28:15.5364761Z             {
2026-06-19T23:28:15.5364933Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5365218Z               "line": 1937
2026-06-19T23:28:15.5365334Z             },
2026-06-19T23:28:15.5365452Z             {
2026-06-19T23:28:15.5365616Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5365748Z               "line": 118
2026-06-19T23:28:15.5365872Z             },
2026-06-19T23:28:15.5365996Z             {
2026-06-19T23:28:15.5366163Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5366292Z               "line": 681
2026-06-19T23:28:15.5366420Z             },
2026-06-19T23:28:15.5366550Z             {
2026-06-19T23:28:15.5366711Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5366939Z               "line": 818
2026-06-19T23:28:15.5367066Z             },
2026-06-19T23:28:15.5367194Z             {
2026-06-19T23:28:15.5367361Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5367494Z               "line": 271
2026-06-19T23:28:15.5367614Z             },
2026-06-19T23:28:15.5367737Z             {
2026-06-19T23:28:15.5367905Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5368033Z               "line": 458
2026-06-19T23:28:15.5368163Z             },
2026-06-19T23:28:15.5368282Z             {
2026-06-19T23:28:15.5368448Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5368582Z               "line": 1246
2026-06-19T23:28:15.5368710Z             }
2026-06-19T23:28:15.5368835Z           ]
2026-06-19T23:28:15.5369034Z         },
2026-06-19T23:28:15.5369174Z         "int": {
2026-06-19T23:28:15.5369307Z           "complete": false,
2026-06-19T23:28:15.5369442Z           "evidence": []
2026-06-19T23:28:15.5369564Z         },
2026-06-19T23:28:15.5369701Z         "unit": {
2026-06-19T23:28:15.5369840Z           "complete": true,
2026-06-19T23:28:15.5369972Z           "evidence": [
2026-06-19T23:28:15.5370097Z             {
2026-06-19T23:28:15.5370259Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5370398Z               "line": 909
2026-06-19T23:28:15.5370517Z             },
2026-06-19T23:28:15.5370645Z             {
2026-06-19T23:28:15.5370818Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-19T23:28:15.5370940Z               "line": 76
2026-06-19T23:28:15.5371066Z             },
2026-06-19T23:28:15.5371189Z             {
2026-06-19T23:28:15.5371362Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-19T23:28:15.5371489Z               "line": 147
2026-06-19T23:28:15.5371604Z             }
2026-06-19T23:28:15.5371720Z           ]
2026-06-19T23:28:15.5371846Z         }
2026-06-19T23:28:15.5371965Z       }
2026-06-19T23:28:15.5372075Z     },
2026-06-19T23:28:15.5372192Z     {
2026-06-19T23:28:15.5372325Z       "id": "REQ-EP-5",
2026-06-19T23:28:15.5373055Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-19T23:28:15.5373207Z       "requiredStages": [
2026-06-19T23:28:15.5373323Z         "impl",
2026-06-19T23:28:15.5373451Z         "unit",
2026-06-19T23:28:15.5373570Z         "int"
2026-06-19T23:28:15.5373694Z       ],
2026-06-19T23:28:15.5373813Z       "stages": {
2026-06-19T23:28:15.5373948Z         "doc": {
2026-06-19T23:28:15.5374090Z           "complete": false,
2026-06-19T23:28:15.5374220Z           "evidence": []
2026-06-19T23:28:15.5374347Z         },
2026-06-19T23:28:15.5374466Z         "impl": {
2026-06-19T23:28:15.5374596Z           "complete": true,
2026-06-19T23:28:15.5374727Z           "evidence": [
2026-06-19T23:28:15.5374866Z             {
2026-06-19T23:28:15.5375040Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.5375169Z               "line": 367
2026-06-19T23:28:15.5375293Z             },
2026-06-19T23:28:15.5375421Z             {
2026-06-19T23:28:15.5375593Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5375822Z               "line": 18
2026-06-19T23:28:15.5375946Z             },
2026-06-19T23:28:15.5376074Z             {
2026-06-19T23:28:15.5376246Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5376370Z               "line": 63
2026-06-19T23:28:15.5376495Z             },
2026-06-19T23:28:15.5376622Z             {
2026-06-19T23:28:15.5376786Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5376923Z               "line": 92
2026-06-19T23:28:15.5377057Z             },
2026-06-19T23:28:15.5377177Z             {
2026-06-19T23:28:15.5377351Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5377569Z               "line": 167
2026-06-19T23:28:15.5377696Z             },
2026-06-19T23:28:15.5377817Z             {
2026-06-19T23:28:15.5377992Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5378122Z               "line": 179
2026-06-19T23:28:15.5378255Z             },
2026-06-19T23:28:15.5378379Z             {
2026-06-19T23:28:15.5378546Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.5378675Z               "line": 114
2026-06-19T23:28:15.5378794Z             },
2026-06-19T23:28:15.5378917Z             {
2026-06-19T23:28:15.5379275Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5379648Z               "line": 22
2026-06-19T23:28:15.5379910Z             },
2026-06-19T23:28:15.5380181Z             {
2026-06-19T23:28:15.5380486Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5380819Z               "line": 145
2026-06-19T23:28:15.5381129Z             },
2026-06-19T23:28:15.5381368Z             {
2026-06-19T23:28:15.5381654Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5381993Z               "line": 174
2026-06-19T23:28:15.5382260Z             },
2026-06-19T23:28:15.5382506Z             {
2026-06-19T23:28:15.5382799Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5383166Z               "line": 196
2026-06-19T23:28:15.5383467Z             },
2026-06-19T23:28:15.5383719Z             {
2026-06-19T23:28:15.5384020Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5384349Z               "line": 221
2026-06-19T23:28:15.5384606Z             },
2026-06-19T23:28:15.5384851Z             {
2026-06-19T23:28:15.5385132Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5385464Z               "line": 247
2026-06-19T23:28:15.5385729Z             },
2026-06-19T23:28:15.5385995Z             {
2026-06-19T23:28:15.5386291Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5386625Z               "line": 270
2026-06-19T23:28:15.5386883Z             },
2026-06-19T23:28:15.5387131Z             {
2026-06-19T23:28:15.5387413Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.5387761Z               "line": 100
2026-06-19T23:28:15.5388055Z             },
2026-06-19T23:28:15.5388300Z             {
2026-06-19T23:28:15.5388571Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5388881Z               "line": 6040
2026-06-19T23:28:15.5389215Z             },
2026-06-19T23:28:15.5389473Z             {
2026-06-19T23:28:15.5389754Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5390064Z               "line": 6174
2026-06-19T23:28:15.5390336Z             },
2026-06-19T23:28:15.5390576Z             {
2026-06-19T23:28:15.5390841Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5391160Z               "line": 6340
2026-06-19T23:28:15.5391431Z             },
2026-06-19T23:28:15.5391680Z             {
2026-06-19T23:28:15.5391947Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5392262Z               "line": 6868
2026-06-19T23:28:15.5392529Z             }
2026-06-19T23:28:15.5392763Z           ]
2026-06-19T23:28:15.5393004Z         },
2026-06-19T23:28:15.5393369Z         "int": {
2026-06-19T23:28:15.5393631Z           "complete": true,
2026-06-19T23:28:15.5393918Z           "evidence": [
2026-06-19T23:28:15.5394180Z             {
2026-06-19T23:28:15.5394476Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-19T23:28:15.5394824Z               "line": 16
2026-06-19T23:28:15.5395087Z             },
2026-06-19T23:28:15.5395335Z             {
2026-06-19T23:28:15.5395616Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-19T23:28:15.5395929Z               "line": 15
2026-06-19T23:28:15.5396184Z             }
2026-06-19T23:28:15.5396433Z           ]
2026-06-19T23:28:15.5396681Z         },
2026-06-19T23:28:15.5397019Z         "unit": {
2026-06-19T23:28:15.5397281Z           "complete": true,
2026-06-19T23:28:15.5397557Z           "evidence": [
2026-06-19T23:28:15.5397809Z             {
2026-06-19T23:28:15.5398110Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5398485Z               "line": 246
2026-06-19T23:28:15.5398760Z             },
2026-06-19T23:28:15.5399151Z             {
2026-06-19T23:28:15.5399465Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5399800Z               "line": 306
2026-06-19T23:28:15.5400067Z             },
2026-06-19T23:28:15.5400310Z             {
2026-06-19T23:28:15.5400591Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-19T23:28:15.5400924Z               "line": 363
2026-06-19T23:28:15.5401188Z             },
2026-06-19T23:28:15.5401439Z             {
2026-06-19T23:28:15.5401720Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5402059Z               "line": 286
2026-06-19T23:28:15.5402335Z             },
2026-06-19T23:28:15.5402578Z             {
2026-06-19T23:28:15.5402865Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5403193Z               "line": 338
2026-06-19T23:28:15.5403456Z             },
2026-06-19T23:28:15.5403712Z             {
2026-06-19T23:28:15.5403996Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.5404330Z               "line": 779
2026-06-19T23:28:15.5404597Z             },
2026-06-19T23:28:15.5404826Z             {
2026-06-19T23:28:15.5405093Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5405403Z               "line": 8723
2026-06-19T23:28:15.5405666Z             },
2026-06-19T23:28:15.5405919Z             {
2026-06-19T23:28:15.5406190Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5406512Z               "line": 8876
2026-06-19T23:28:15.5406782Z             },
2026-06-19T23:28:15.5407026Z             {
2026-06-19T23:28:15.5407283Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5407608Z               "line": 9465
2026-06-19T23:28:15.5407870Z             },
2026-06-19T23:28:15.5408112Z             {
2026-06-19T23:28:15.5408394Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5408704Z               "line": 9581
2026-06-19T23:28:15.5409032Z             }
2026-06-19T23:28:15.5409287Z           ]
2026-06-19T23:28:15.5409526Z         }
2026-06-19T23:28:15.5409769Z       }
2026-06-19T23:28:15.5410007Z     },
2026-06-19T23:28:15.5410236Z     {
2026-06-19T23:28:15.5410479Z       "id": "REQ-EP-6",
2026-06-19T23:28:15.5412213Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-19T23:28:15.5413706Z       "requiredStages": [
2026-06-19T23:28:15.5413988Z         "doc",
2026-06-19T23:28:15.5414244Z         "impl",
2026-06-19T23:28:15.5414494Z         "unit"
2026-06-19T23:28:15.5414747Z       ],
2026-06-19T23:28:15.5415099Z       "stages": {
2026-06-19T23:28:15.5415362Z         "doc": {
2026-06-19T23:28:15.5415625Z           "complete": true,
2026-06-19T23:28:15.5415906Z           "evidence": [
2026-06-19T23:28:15.5416169Z             {
2026-06-19T23:28:15.5416436Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.5416731Z               "line": 227
2026-06-19T23:28:15.5417001Z             }
2026-06-19T23:28:15.5417238Z           ]
2026-06-19T23:28:15.5417481Z         },
2026-06-19T23:28:15.5417723Z         "impl": {
2026-06-19T23:28:15.5417980Z           "complete": true,
2026-06-19T23:28:15.5418262Z           "evidence": [
2026-06-19T23:28:15.5418525Z             {
2026-06-19T23:28:15.5418902Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5419312Z               "line": 212
2026-06-19T23:28:15.5419568Z             }
2026-06-19T23:28:15.5419805Z           ]
2026-06-19T23:28:15.5420043Z         },
2026-06-19T23:28:15.5420290Z         "int": {
2026-06-19T23:28:15.5420547Z           "complete": true,
2026-06-19T23:28:15.5420838Z           "evidence": [
2026-06-19T23:28:15.5421101Z             {
2026-06-19T23:28:15.5421387Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-19T23:28:15.5421721Z               "line": 18
2026-06-19T23:28:15.5421989Z             }
2026-06-19T23:28:15.5422228Z           ]
2026-06-19T23:28:15.5422473Z         },
2026-06-19T23:28:15.5422712Z         "unit": {
2026-06-19T23:28:15.5422974Z           "complete": true,
2026-06-19T23:28:15.5423256Z           "evidence": [
2026-06-19T23:28:15.5423518Z             {
2026-06-19T23:28:15.5423809Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.5424148Z               "line": 556
2026-06-19T23:28:15.5424428Z             },
2026-06-19T23:28:15.5424671Z             {
2026-06-19T23:28:15.5424964Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5425288Z               "line": 900
2026-06-19T23:28:15.5425551Z             }
2026-06-19T23:28:15.5425799Z           ]
2026-06-19T23:28:15.5426047Z         }
2026-06-19T23:28:15.5426289Z       }
2026-06-19T23:28:15.5426518Z     },
2026-06-19T23:28:15.5426753Z     {
2026-06-19T23:28:15.5427005Z       "id": "REQ-EP-7",
2026-06-19T23:28:15.5428889Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-19T23:28:15.5430598Z       "requiredStages": [
2026-06-19T23:28:15.5430875Z         "doc",
2026-06-19T23:28:15.5431132Z         "impl",
2026-06-19T23:28:15.5431389Z         "unit"
2026-06-19T23:28:15.5431628Z       ],
2026-06-19T23:28:15.5431867Z       "stages": {
2026-06-19T23:28:15.5432119Z         "doc": {
2026-06-19T23:28:15.5432386Z           "complete": true,
2026-06-19T23:28:15.5432663Z           "evidence": [
2026-06-19T23:28:15.5432920Z             {
2026-06-19T23:28:15.5433177Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.5433478Z               "line": 490
2026-06-19T23:28:15.5433745Z             }
2026-06-19T23:28:15.5433987Z           ]
2026-06-19T23:28:15.5434226Z         },
2026-06-19T23:28:15.5434469Z         "impl": {
2026-06-19T23:28:15.5434732Z           "complete": true,
2026-06-19T23:28:15.5435018Z           "evidence": [
2026-06-19T23:28:15.5435283Z             {
2026-06-19T23:28:15.5435576Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.5435919Z               "line": 505
2026-06-19T23:28:15.5436186Z             },
2026-06-19T23:28:15.5436435Z             {
2026-06-19T23:28:15.5436716Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.5437049Z               "line": 87
2026-06-19T23:28:15.5437436Z             },
2026-06-19T23:28:15.5437684Z             {
2026-06-19T23:28:15.5437985Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.5438339Z               "line": 81
2026-06-19T23:28:15.5438596Z             },
2026-06-19T23:28:15.5438839Z             {
2026-06-19T23:28:15.5439198Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.5439560Z               "line": 166
2026-06-19T23:28:15.5439822Z             },
2026-06-19T23:28:15.5440055Z             {
2026-06-19T23:28:15.5440322Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5440655Z               "line": 1617
2026-06-19T23:28:15.5441019Z             }
2026-06-19T23:28:15.5441254Z           ]
2026-06-19T23:28:15.5441497Z         },
2026-06-19T23:28:15.5441735Z         "int": {
2026-06-19T23:28:15.5441996Z           "complete": false,
2026-06-19T23:28:15.5442283Z           "evidence": []
2026-06-19T23:28:15.5442541Z         },
2026-06-19T23:28:15.5442794Z         "unit": {
2026-06-19T23:28:15.5443066Z           "complete": true,
2026-06-19T23:28:15.5443338Z           "evidence": [
2026-06-19T23:28:15.5443608Z             {
2026-06-19T23:28:15.5443893Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.5444227Z               "line": 623
2026-06-19T23:28:15.5444495Z             },
2026-06-19T23:28:15.5444738Z             {
2026-06-19T23:28:15.5445030Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.5445359Z               "line": 212
2026-06-19T23:28:15.5445626Z             },
2026-06-19T23:28:15.5445871Z             {
2026-06-19T23:28:15.5446155Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.5446489Z               "line": 307
2026-06-19T23:28:15.5446746Z             },
2026-06-19T23:28:15.5446990Z             {
2026-06-19T23:28:15.5447258Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5447573Z               "line": 7696
2026-06-19T23:28:15.5447849Z             },
2026-06-19T23:28:15.5448096Z             {
2026-06-19T23:28:15.5448373Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5448691Z               "line": 7723
2026-06-19T23:28:15.5449041Z             }
2026-06-19T23:28:15.5449280Z           ]
2026-06-19T23:28:15.5449524Z         }
2026-06-19T23:28:15.5449763Z       }
2026-06-19T23:28:15.5450000Z     },
2026-06-19T23:28:15.5450239Z     {
2026-06-19T23:28:15.5450487Z       "id": "REQ-FRONT-1",
2026-06-19T23:28:15.5450868Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-19T23:28:15.5451258Z       "requiredStages": [],
2026-06-19T23:28:15.5451542Z       "stages": {
2026-06-19T23:28:15.5451800Z         "doc": {
2026-06-19T23:28:15.5452057Z           "complete": false,
2026-06-19T23:28:15.5452343Z           "evidence": []
2026-06-19T23:28:15.5452605Z         },
2026-06-19T23:28:15.5456917Z         "impl": {
2026-06-19T23:28:15.5457241Z           "complete": false,
2026-06-19T23:28:15.5457550Z           "evidence": []
2026-06-19T23:28:15.5457823Z         },
2026-06-19T23:28:15.5458071Z         "int": {
2026-06-19T23:28:15.5458332Z           "complete": false,
2026-06-19T23:28:15.5458623Z           "evidence": []
2026-06-19T23:28:15.5458885Z         },
2026-06-19T23:28:15.5459223Z         "unit": {
2026-06-19T23:28:15.5459497Z           "complete": false,
2026-06-19T23:28:15.5459774Z           "evidence": []
2026-06-19T23:28:15.5460037Z         }
2026-06-19T23:28:15.5460279Z       }
2026-06-19T23:28:15.5460512Z     },
2026-06-19T23:28:15.5460751Z     {
2026-06-19T23:28:15.5461014Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-19T23:28:15.5466746Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-19T23:28:15.5471769Z       "requiredStages": [
2026-06-19T23:28:15.5472041Z         "int"
2026-06-19T23:28:15.5472302Z       ],
2026-06-19T23:28:15.5472540Z       "stages": {
2026-06-19T23:28:15.5472795Z         "doc": {
2026-06-19T23:28:15.5473052Z           "complete": false,
2026-06-19T23:28:15.5473344Z           "evidence": []
2026-06-19T23:28:15.5473620Z         },
2026-06-19T23:28:15.5473868Z         "impl": {
2026-06-19T23:28:15.5474122Z           "complete": false,
2026-06-19T23:28:15.5474408Z           "evidence": []
2026-06-19T23:28:15.5474670Z         },
2026-06-19T23:28:15.5474913Z         "int": {
2026-06-19T23:28:15.5475174Z           "complete": true,
2026-06-19T23:28:15.5475466Z           "evidence": [
2026-06-19T23:28:15.5475723Z             {
2026-06-19T23:28:15.5476033Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-19T23:28:15.5476380Z               "line": 300
2026-06-19T23:28:15.5476644Z             }
2026-06-19T23:28:15.5476895Z           ]
2026-06-19T23:28:15.5477138Z         },
2026-06-19T23:28:15.5477386Z         "unit": {
2026-06-19T23:28:15.5477657Z           "complete": false,
2026-06-19T23:28:15.5477950Z           "evidence": []
2026-06-19T23:28:15.5478203Z         }
2026-06-19T23:28:15.5478446Z       }
2026-06-19T23:28:15.5478680Z     },
2026-06-19T23:28:15.5478924Z     {
2026-06-19T23:28:15.5479286Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-19T23:28:15.5482101Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-19T23:28:15.5484514Z       "requiredStages": [
2026-06-19T23:28:15.5484801Z         "impl",
2026-06-19T23:28:15.5485048Z         "unit",
2026-06-19T23:28:15.5485283Z         "int"
2026-06-19T23:28:15.5485521Z       ],
2026-06-19T23:28:15.5485753Z       "stages": {
2026-06-19T23:28:15.5486002Z         "doc": {
2026-06-19T23:28:15.5486406Z           "complete": false,
2026-06-19T23:28:15.5486688Z           "evidence": []
2026-06-19T23:28:15.5486955Z         },
2026-06-19T23:28:15.5487194Z         "impl": {
2026-06-19T23:28:15.5487445Z           "complete": true,
2026-06-19T23:28:15.5487727Z           "evidence": [
2026-06-19T23:28:15.5487984Z             {
2026-06-19T23:28:15.5488273Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5488607Z               "line": 257
2026-06-19T23:28:15.5488869Z             }
2026-06-19T23:28:15.5489188Z           ]
2026-06-19T23:28:15.5489427Z         },
2026-06-19T23:28:15.5489664Z         "int": {
2026-06-19T23:28:15.5489917Z           "complete": true,
2026-06-19T23:28:15.5490308Z           "evidence": [
2026-06-19T23:28:15.5490560Z             {
2026-06-19T23:28:15.5490866Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-19T23:28:15.5491216Z               "line": 93
2026-06-19T23:28:15.5491464Z             }
2026-06-19T23:28:15.5491707Z           ]
2026-06-19T23:28:15.5491954Z         },
2026-06-19T23:28:15.5492188Z         "unit": {
2026-06-19T23:28:15.5492450Z           "complete": true,
2026-06-19T23:28:15.5492723Z           "evidence": [
2026-06-19T23:28:15.5492985Z             {
2026-06-19T23:28:15.5493272Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5493599Z               "line": 798
2026-06-19T23:28:15.5493844Z             },
2026-06-19T23:28:15.5494087Z             {
2026-06-19T23:28:15.5494374Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5494698Z               "line": 820
2026-06-19T23:28:15.5494960Z             },
2026-06-19T23:28:15.5495199Z             {
2026-06-19T23:28:15.5495490Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5495815Z               "line": 851
2026-06-19T23:28:15.5496066Z             }
2026-06-19T23:28:15.5496308Z           ]
2026-06-19T23:28:15.5496547Z         }
2026-06-19T23:28:15.5496781Z       }
2026-06-19T23:28:15.5497009Z     },
2026-06-19T23:28:15.5497253Z     {
2026-06-19T23:28:15.5497534Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-19T23:28:15.5500345Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-19T23:28:15.5502649Z       "requiredStages": [
2026-06-19T23:28:15.5502925Z         "doc",
2026-06-19T23:28:15.5503168Z         "impl",
2026-06-19T23:28:15.5503406Z         "unit",
2026-06-19T23:28:15.5503649Z         "int"
2026-06-19T23:28:15.5503898Z       ],
2026-06-19T23:28:15.5504130Z       "stages": {
2026-06-19T23:28:15.5504380Z         "doc": {
2026-06-19T23:28:15.5504629Z           "complete": true,
2026-06-19T23:28:15.5504905Z           "evidence": [
2026-06-19T23:28:15.5505168Z             {
2026-06-19T23:28:15.5505449Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5505759Z               "line": 333
2026-06-19T23:28:15.5506021Z             }
2026-06-19T23:28:15.5506269Z           ]
2026-06-19T23:28:15.5506512Z         },
2026-06-19T23:28:15.5506752Z         "impl": {
2026-06-19T23:28:15.5507026Z           "complete": true,
2026-06-19T23:28:15.5507297Z           "evidence": [
2026-06-19T23:28:15.5507550Z             {
2026-06-19T23:28:15.5507850Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5508300Z               "line": 494
2026-06-19T23:28:15.5508556Z             },
2026-06-19T23:28:15.5508799Z             {
2026-06-19T23:28:15.5509152Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5509488Z               "line": 499
2026-06-19T23:28:15.5509755Z             },
2026-06-19T23:28:15.5509999Z             {
2026-06-19T23:28:15.5510284Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5510618Z               "line": 874
2026-06-19T23:28:15.5510881Z             },
2026-06-19T23:28:15.5511118Z             {
2026-06-19T23:28:15.5511409Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5511850Z               "line": 915
2026-06-19T23:28:15.5512114Z             },
2026-06-19T23:28:15.5512346Z             {
2026-06-19T23:28:15.5512636Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5512965Z               "line": 926
2026-06-19T23:28:15.5513233Z             },
2026-06-19T23:28:15.5513485Z             {
2026-06-19T23:28:15.5513768Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.5514096Z               "line": 358
2026-06-19T23:28:15.5514363Z             }
2026-06-19T23:28:15.5514595Z           ]
2026-06-19T23:28:15.5514832Z         },
2026-06-19T23:28:15.5515069Z         "int": {
2026-06-19T23:28:15.5515331Z           "complete": true,
2026-06-19T23:28:15.5515608Z           "evidence": [
2026-06-19T23:28:15.5515856Z             {
2026-06-19T23:28:15.5516167Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-19T23:28:15.5516514Z               "line": 30
2026-06-19T23:28:15.5516790Z             }
2026-06-19T23:28:15.5517030Z           ]
2026-06-19T23:28:15.5517269Z         },
2026-06-19T23:28:15.5517505Z         "unit": {
2026-06-19T23:28:15.5517767Z           "complete": true,
2026-06-19T23:28:15.5518045Z           "evidence": [
2026-06-19T23:28:15.5518302Z             {
2026-06-19T23:28:15.5518593Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5518932Z               "line": 1493
2026-06-19T23:28:15.5519279Z             },
2026-06-19T23:28:15.5519523Z             {
2026-06-19T23:28:15.5519812Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5520143Z               "line": 1518
2026-06-19T23:28:15.5520400Z             },
2026-06-19T23:28:15.5520644Z             {
2026-06-19T23:28:15.5520921Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5521250Z               "line": 1535
2026-06-19T23:28:15.5521512Z             },
2026-06-19T23:28:15.5521756Z             {
2026-06-19T23:28:15.5522051Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5522385Z               "line": 1578
2026-06-19T23:28:15.5522654Z             }
2026-06-19T23:28:15.5522896Z           ]
2026-06-19T23:28:15.5523135Z         }
2026-06-19T23:28:15.5523364Z       }
2026-06-19T23:28:15.5523587Z     },
2026-06-19T23:28:15.5523831Z     {
2026-06-19T23:28:15.5524126Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-19T23:28:15.5527017Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-19T23:28:15.5529610Z       "requiredStages": [],
2026-06-19T23:28:15.5529891Z       "stages": {
2026-06-19T23:28:15.5530145Z         "doc": {
2026-06-19T23:28:15.5530405Z           "complete": false,
2026-06-19T23:28:15.5530689Z           "evidence": []
2026-06-19T23:28:15.5530951Z         },
2026-06-19T23:28:15.5531190Z         "impl": {
2026-06-19T23:28:15.5531447Z           "complete": false,
2026-06-19T23:28:15.5531734Z           "evidence": []
2026-06-19T23:28:15.5531996Z         },
2026-06-19T23:28:15.5532239Z         "int": {
2026-06-19T23:28:15.5532487Z           "complete": false,
2026-06-19T23:28:15.5532782Z           "evidence": []
2026-06-19T23:28:15.5533153Z         },
2026-06-19T23:28:15.5533385Z         "unit": {
2026-06-19T23:28:15.5533647Z           "complete": false,
2026-06-19T23:28:15.5533929Z           "evidence": []
2026-06-19T23:28:15.5534185Z         }
2026-06-19T23:28:15.5534423Z       }
2026-06-19T23:28:15.5534657Z     },
2026-06-19T23:28:15.5534888Z     {
2026-06-19T23:28:15.5535178Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-19T23:28:15.5539273Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-19T23:28:15.5542890Z       "requiredStages": [
2026-06-19T23:28:15.5543167Z         "impl",
2026-06-19T23:28:15.5543419Z         "unit",
2026-06-19T23:28:15.5543666Z         "int"
2026-06-19T23:28:15.5543913Z       ],
2026-06-19T23:28:15.5544150Z       "stages": {
2026-06-19T23:28:15.5544407Z         "doc": {
2026-06-19T23:28:15.5544669Z           "complete": false,
2026-06-19T23:28:15.5544965Z           "evidence": []
2026-06-19T23:28:15.5545227Z         },
2026-06-19T23:28:15.5545472Z         "impl": {
2026-06-19T23:28:15.5545724Z           "complete": true,
2026-06-19T23:28:15.5546005Z           "evidence": [
2026-06-19T23:28:15.5546276Z             {
2026-06-19T23:28:15.5546573Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5546921Z               "line": 570
2026-06-19T23:28:15.5547184Z             },
2026-06-19T23:28:15.5547432Z             {
2026-06-19T23:28:15.5547728Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5548052Z               "line": 594
2026-06-19T23:28:15.5548320Z             },
2026-06-19T23:28:15.5548566Z             {
2026-06-19T23:28:15.5548853Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5549271Z               "line": 620
2026-06-19T23:28:15.5549528Z             },
2026-06-19T23:28:15.5549781Z             {
2026-06-19T23:28:15.5550063Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5550402Z               "line": 679
2026-06-19T23:28:15.5550664Z             },
2026-06-19T23:28:15.5550912Z             {
2026-06-19T23:28:15.5551189Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.5551620Z               "line": 89
2026-06-19T23:28:15.5551881Z             },
2026-06-19T23:28:15.5552133Z             {
2026-06-19T23:28:15.5552414Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.5552744Z               "line": 134
2026-06-19T23:28:15.5553001Z             }
2026-06-19T23:28:15.5553239Z           ]
2026-06-19T23:28:15.5553479Z         },
2026-06-19T23:28:15.5553722Z         "int": {
2026-06-19T23:28:15.5553969Z           "complete": true,
2026-06-19T23:28:15.5554249Z           "evidence": [
2026-06-19T23:28:15.5554515Z             {
2026-06-19T23:28:15.5554840Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-19T23:28:15.5555320Z               "line": 20
2026-06-19T23:28:15.5555582Z             }
2026-06-19T23:28:15.5555826Z           ]
2026-06-19T23:28:15.5556069Z         },
2026-06-19T23:28:15.5556308Z         "unit": {
2026-06-19T23:28:15.5556565Z           "complete": true,
2026-06-19T23:28:15.5556878Z           "evidence": [
2026-06-19T23:28:15.5557153Z             {
2026-06-19T23:28:15.5557443Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5557772Z               "line": 1047
2026-06-19T23:28:15.5558030Z             },
2026-06-19T23:28:15.5558274Z             {
2026-06-19T23:28:15.5558550Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.5558880Z               "line": 445
2026-06-19T23:28:15.5559233Z             }
2026-06-19T23:28:15.5559360Z           ]
2026-06-19T23:28:15.5559476Z         }
2026-06-19T23:28:15.5559599Z       }
2026-06-19T23:28:15.5559726Z     },
2026-06-19T23:28:15.5559846Z     {
2026-06-19T23:28:15.5560031Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-19T23:28:15.5562771Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-19T23:28:15.5562927Z       "requiredStages": [
2026-06-19T23:28:15.5563047Z         "doc",
2026-06-19T23:28:15.5563171Z         "impl",
2026-06-19T23:28:15.5563299Z         "unit",
2026-06-19T23:28:15.5563428Z         "int"
2026-06-19T23:28:15.5563552Z       ],
2026-06-19T23:28:15.5563682Z       "stages": {
2026-06-19T23:28:15.5563804Z         "doc": {
2026-06-19T23:28:15.5563933Z           "complete": true,
2026-06-19T23:28:15.5564077Z           "evidence": [
2026-06-19T23:28:15.5564191Z             {
2026-06-19T23:28:15.5564354Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5564481Z               "line": 302
2026-06-19T23:28:15.5564602Z             }
2026-06-19T23:28:15.5564726Z           ]
2026-06-19T23:28:15.5564833Z         },
2026-06-19T23:28:15.5564967Z         "impl": {
2026-06-19T23:28:15.5565099Z           "complete": true,
2026-06-19T23:28:15.5565231Z           "evidence": [
2026-06-19T23:28:15.5565356Z             {
2026-06-19T23:28:15.5565541Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.5565680Z               "line": 108
2026-06-19T23:28:15.5565808Z             },
2026-06-19T23:28:15.5565938Z             {
2026-06-19T23:28:15.5566118Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5566253Z               "line": 795
2026-06-19T23:28:15.5566386Z             },
2026-06-19T23:28:15.5566509Z             {
2026-06-19T23:28:15.5566676Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5566911Z               "line": 995
2026-06-19T23:28:15.5567043Z             },
2026-06-19T23:28:15.5567164Z             {
2026-06-19T23:28:15.5567339Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5567466Z               "line": 23
2026-06-19T23:28:15.5567591Z             },
2026-06-19T23:28:15.5567713Z             {
2026-06-19T23:28:15.5567885Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5568018Z               "line": 113
2026-06-19T23:28:15.5568142Z             },
2026-06-19T23:28:15.5568266Z             {
2026-06-19T23:28:15.5568547Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5568680Z               "line": 158
2026-06-19T23:28:15.5568805Z             },
2026-06-19T23:28:15.5568919Z             {
2026-06-19T23:28:15.5569177Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5569305Z               "line": 218
2026-06-19T23:28:15.5569440Z             },
2026-06-19T23:28:15.5569567Z             {
2026-06-19T23:28:15.5569726Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5569854Z               "line": 261
2026-06-19T23:28:15.5569982Z             },
2026-06-19T23:28:15.5570113Z             {
2026-06-19T23:28:15.5570268Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5570401Z               "line": 275
2026-06-19T23:28:15.5570530Z             },
2026-06-19T23:28:15.5570648Z             {
2026-06-19T23:28:15.5570821Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5570949Z               "line": 320
2026-06-19T23:28:15.5571079Z             },
2026-06-19T23:28:15.5571202Z             {
2026-06-19T23:28:15.5571375Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5571502Z               "line": 347
2026-06-19T23:28:15.5571631Z             },
2026-06-19T23:28:15.5571760Z             {
2026-06-19T23:28:15.5571936Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5572070Z               "line": 359
2026-06-19T23:28:15.5572203Z             },
2026-06-19T23:28:15.5572314Z             {
2026-06-19T23:28:15.5572494Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5572622Z               "line": 373
2026-06-19T23:28:15.5572749Z             },
2026-06-19T23:28:15.5572872Z             {
2026-06-19T23:28:15.5573040Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5573172Z               "line": 400
2026-06-19T23:28:15.5573297Z             },
2026-06-19T23:28:15.5573421Z             {
2026-06-19T23:28:15.5573593Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5573726Z               "line": 643
2026-06-19T23:28:15.5573839Z             },
2026-06-19T23:28:15.5573965Z             {
2026-06-19T23:28:15.5574140Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5574279Z               "line": 989
2026-06-19T23:28:15.5574403Z             },
2026-06-19T23:28:15.5574527Z             {
2026-06-19T23:28:15.5574698Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5574818Z               "line": 256
2026-06-19T23:28:15.5574943Z             },
2026-06-19T23:28:15.5575076Z             {
2026-06-19T23:28:15.5575238Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5575375Z               "line": 983
2026-06-19T23:28:15.5575484Z             },
2026-06-19T23:28:15.5575612Z             {
2026-06-19T23:28:15.5575782Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5575921Z               "line": 1055
2026-06-19T23:28:15.5576053Z             },
2026-06-19T23:28:15.5576174Z             {
2026-06-19T23:28:15.5576350Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5576479Z               "line": 1067
2026-06-19T23:28:15.5576603Z             },
2026-06-19T23:28:15.5576822Z             {
2026-06-19T23:28:15.5576998Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5577137Z               "line": 1662
2026-06-19T23:28:15.5577250Z             },
2026-06-19T23:28:15.5577370Z             {
2026-06-19T23:28:15.5577528Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5577661Z               "line": 188
2026-06-19T23:28:15.5577786Z             },
2026-06-19T23:28:15.5577913Z             {
2026-06-19T23:28:15.5578080Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5578207Z               "line": 265
2026-06-19T23:28:15.5578334Z             },
2026-06-19T23:28:15.5578554Z             {
2026-06-19T23:28:15.5578726Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5578851Z               "line": 276
2026-06-19T23:28:15.5579041Z             },
2026-06-19T23:28:15.5579165Z             {
2026-06-19T23:28:15.5579327Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5579460Z               "line": 329
2026-06-19T23:28:15.5579584Z             },
2026-06-19T23:28:15.5579709Z             {
2026-06-19T23:28:15.5579884Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5580014Z               "line": 56
2026-06-19T23:28:15.5580136Z             },
2026-06-19T23:28:15.5583700Z             {
2026-06-19T23:28:15.5583929Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5584061Z               "line": 188
2026-06-19T23:28:15.5584191Z             },
2026-06-19T23:28:15.5584324Z             {
2026-06-19T23:28:15.5584501Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-19T23:28:15.5584643Z               "line": 82
2026-06-19T23:28:15.5584768Z             },
2026-06-19T23:28:15.5584891Z             {
2026-06-19T23:28:15.5585068Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5585206Z               "line": 308
2026-06-19T23:28:15.5585330Z             },
2026-06-19T23:28:15.5585460Z             {
2026-06-19T23:28:15.5585636Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.5585761Z               "line": 424
2026-06-19T23:28:15.5585878Z             },
2026-06-19T23:28:15.5586015Z             {
2026-06-19T23:28:15.5586177Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5586313Z               "line": 1978
2026-06-19T23:28:15.5586438Z             }
2026-06-19T23:28:15.5586567Z           ]
2026-06-19T23:28:15.5586685Z         },
2026-06-19T23:28:15.5586820Z         "int": {
2026-06-19T23:28:15.5586952Z           "complete": true,
2026-06-19T23:28:15.5587082Z           "evidence": [
2026-06-19T23:28:15.5587215Z             {
2026-06-19T23:28:15.5587387Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-19T23:28:15.5587521Z               "line": 57
2026-06-19T23:28:15.5587644Z             },
2026-06-19T23:28:15.5587769Z             {
2026-06-19T23:28:15.5587940Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-19T23:28:15.5588070Z               "line": 41
2026-06-19T23:28:15.5588198Z             }
2026-06-19T23:28:15.5588318Z           ]
2026-06-19T23:28:15.5588445Z         },
2026-06-19T23:28:15.5588568Z         "unit": {
2026-06-19T23:28:15.5588711Z           "complete": true,
2026-06-19T23:28:15.5588837Z           "evidence": [
2026-06-19T23:28:15.5589034Z             {
2026-06-19T23:28:15.5589209Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.5589339Z               "line": 532
2026-06-19T23:28:15.5589462Z             },
2026-06-19T23:28:15.5589587Z             {
2026-06-19T23:28:15.5589763Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.5589902Z               "line": 757
2026-06-19T23:28:15.5590020Z             },
2026-06-19T23:28:15.5590149Z             {
2026-06-19T23:28:15.5590316Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5590444Z               "line": 1067
2026-06-19T23:28:15.5590565Z             },
2026-06-19T23:28:15.5590826Z             {
2026-06-19T23:28:15.5590998Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5591141Z               "line": 1101
2026-06-19T23:28:15.5591266Z             },
2026-06-19T23:28:15.5591383Z             {
2026-06-19T23:28:15.5591550Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5591683Z               "line": 1143
2026-06-19T23:28:15.5591807Z             },
2026-06-19T23:28:15.5591927Z             {
2026-06-19T23:28:15.5592098Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5592227Z               "line": 1215
2026-06-19T23:28:15.5592446Z             },
2026-06-19T23:28:15.5592575Z             {
2026-06-19T23:28:15.5592737Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5592866Z               "line": 1228
2026-06-19T23:28:15.5592994Z             },
2026-06-19T23:28:15.5593120Z             {
2026-06-19T23:28:15.5593280Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5593410Z               "line": 1251
2026-06-19T23:28:15.5593534Z             },
2026-06-19T23:28:15.5593656Z             {
2026-06-19T23:28:15.5593832Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5593964Z               "line": 1277
2026-06-19T23:28:15.5594083Z             },
2026-06-19T23:28:15.5594198Z             {
2026-06-19T23:28:15.5594369Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5594498Z               "line": 1291
2026-06-19T23:28:15.5594607Z             },
2026-06-19T23:28:15.5594738Z             {
2026-06-19T23:28:15.5594898Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5595023Z               "line": 1315
2026-06-19T23:28:15.5595152Z             },
2026-06-19T23:28:15.5595270Z             {
2026-06-19T23:28:15.5595442Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5595571Z               "line": 1447
2026-06-19T23:28:15.5595701Z             },
2026-06-19T23:28:15.5595828Z             {
2026-06-19T23:28:15.5595987Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5596123Z               "line": 1623
2026-06-19T23:28:15.5596238Z             },
2026-06-19T23:28:15.5596368Z             {
2026-06-19T23:28:15.5596547Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5596681Z               "line": 1678
2026-06-19T23:28:15.5596803Z             },
2026-06-19T23:28:15.5596922Z             {
2026-06-19T23:28:15.5597094Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5597222Z               "line": 1724
2026-06-19T23:28:15.5597356Z             },
2026-06-19T23:28:15.5597465Z             {
2026-06-19T23:28:15.5597637Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5597770Z               "line": 1769
2026-06-19T23:28:15.5597885Z             },
2026-06-19T23:28:15.5598009Z             {
2026-06-19T23:28:15.5598185Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5598310Z               "line": 1813
2026-06-19T23:28:15.5598433Z             },
2026-06-19T23:28:15.5598549Z             {
2026-06-19T23:28:15.5598719Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5598854Z               "line": 1855
2026-06-19T23:28:15.5599048Z             },
2026-06-19T23:28:15.5599161Z             {
2026-06-19T23:28:15.5599341Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5599478Z               "line": 1996
2026-06-19T23:28:15.5599599Z             },
2026-06-19T23:28:15.5599721Z             {
2026-06-19T23:28:15.5599895Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5600022Z               "line": 217
2026-06-19T23:28:15.5600147Z             },
2026-06-19T23:28:15.5600270Z             {
2026-06-19T23:28:15.5600437Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5600671Z               "line": 233
2026-06-19T23:28:15.5600801Z             },
2026-06-19T23:28:15.5600923Z             {
2026-06-19T23:28:15.5601091Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5601219Z               "line": 254
2026-06-19T23:28:15.5601333Z             },
2026-06-19T23:28:15.5601459Z             {
2026-06-19T23:28:15.5601625Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5601759Z               "line": 265
2026-06-19T23:28:15.5601882Z             },
2026-06-19T23:28:15.5602005Z             {
2026-06-19T23:28:15.5602168Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5602415Z               "line": 278
2026-06-19T23:28:15.5602535Z             },
2026-06-19T23:28:15.5602648Z             {
2026-06-19T23:28:15.5602816Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5602944Z               "line": 289
2026-06-19T23:28:15.5603069Z             },
2026-06-19T23:28:15.5603198Z             {
2026-06-19T23:28:15.5603365Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5603497Z               "line": 301
2026-06-19T23:28:15.5603617Z             },
2026-06-19T23:28:15.5603737Z             {
2026-06-19T23:28:15.5603888Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5604028Z               "line": 312
2026-06-19T23:28:15.5604145Z             },
2026-06-19T23:28:15.5604268Z             {
2026-06-19T23:28:15.5604434Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5604557Z               "line": 323
2026-06-19T23:28:15.5604682Z             },
2026-06-19T23:28:15.5604810Z             {
2026-06-19T23:28:15.5604977Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5605106Z               "line": 332
2026-06-19T23:28:15.5605229Z             },
2026-06-19T23:28:15.5605349Z             {
2026-06-19T23:28:15.5605506Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5605641Z               "line": 342
2026-06-19T23:28:15.5605759Z             },
2026-06-19T23:28:15.5605888Z             {
2026-06-19T23:28:15.5606050Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-19T23:28:15.5606183Z               "line": 358
2026-06-19T23:28:15.5606303Z             },
2026-06-19T23:28:15.5606427Z             {
2026-06-19T23:28:15.5606600Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5606727Z               "line": 758
2026-06-19T23:28:15.5606857Z             },
2026-06-19T23:28:15.5606980Z             {
2026-06-19T23:28:15.5607145Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5607278Z               "line": 794
2026-06-19T23:28:15.5607396Z             },
2026-06-19T23:28:15.5607525Z             {
2026-06-19T23:28:15.5607687Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.5607815Z               "line": 966
2026-06-19T23:28:15.5607935Z             },
2026-06-19T23:28:15.5608063Z             {
2026-06-19T23:28:15.5608231Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-19T23:28:15.5608359Z               "line": 145
2026-06-19T23:28:15.5608479Z             },
2026-06-19T23:28:15.5608602Z             {
2026-06-19T23:28:15.5608765Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-19T23:28:15.5608898Z               "line": 224
2026-06-19T23:28:15.5609085Z             },
2026-06-19T23:28:15.5609208Z             {
2026-06-19T23:28:15.5609370Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-19T23:28:15.5609495Z               "line": 293
2026-06-19T23:28:15.5609613Z             },
2026-06-19T23:28:15.5609745Z             {
2026-06-19T23:28:15.5609906Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-19T23:28:15.5610034Z               "line": 17
2026-06-19T23:28:15.5610154Z             },
2026-06-19T23:28:15.5610263Z             {
2026-06-19T23:28:15.5610426Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-19T23:28:15.5610663Z               "line": 104
2026-06-19T23:28:15.5610788Z             }
2026-06-19T23:28:15.5610916Z           ]
2026-06-19T23:28:15.5611032Z         }
2026-06-19T23:28:15.5611145Z       }
2026-06-19T23:28:15.5611269Z     },
2026-06-19T23:28:15.5611389Z     {
2026-06-19T23:28:15.5611546Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-19T23:28:15.5614715Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-19T23:28:15.5614981Z       "requiredStages": [
2026-06-19T23:28:15.5615113Z         "doc",
2026-06-19T23:28:15.5615227Z         "impl",
2026-06-19T23:28:15.5615356Z         "unit",
2026-06-19T23:28:15.5615480Z         "int"
2026-06-19T23:28:15.5615609Z       ],
2026-06-19T23:28:15.5615737Z       "stages": {
2026-06-19T23:28:15.5615858Z         "doc": {
2026-06-19T23:28:15.5615986Z           "complete": true,
2026-06-19T23:28:15.5616114Z           "evidence": [
2026-06-19T23:28:15.5616234Z             {
2026-06-19T23:28:15.5616390Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5616525Z               "line": 388
2026-06-19T23:28:15.5616653Z             }
2026-06-19T23:28:15.5616763Z           ]
2026-06-19T23:28:15.5616891Z         },
2026-06-19T23:28:15.5617015Z         "impl": {
2026-06-19T23:28:15.5617146Z           "complete": true,
2026-06-19T23:28:15.5617272Z           "evidence": [
2026-06-19T23:28:15.5617398Z             {
2026-06-19T23:28:15.5617572Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5617700Z               "line": 773
2026-06-19T23:28:15.5617825Z             },
2026-06-19T23:28:15.5617947Z             {
2026-06-19T23:28:15.5618119Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5618242Z               "line": 796
2026-06-19T23:28:15.5618371Z             }
2026-06-19T23:28:15.5618495Z           ]
2026-06-19T23:28:15.5618609Z         },
2026-06-19T23:28:15.5618734Z         "int": {
2026-06-19T23:28:15.5618867Z           "complete": true,
2026-06-19T23:28:15.5619068Z           "evidence": [
2026-06-19T23:28:15.5619201Z             {
2026-06-19T23:28:15.5619374Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-19T23:28:15.5619505Z               "line": 228
2026-06-19T23:28:15.5619625Z             },
2026-06-19T23:28:15.5619750Z             {
2026-06-19T23:28:15.5619921Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-19T23:28:15.5620050Z               "line": 468
2026-06-19T23:28:15.5620173Z             }
2026-06-19T23:28:15.5620305Z           ]
2026-06-19T23:28:15.5620433Z         },
2026-06-19T23:28:15.5620555Z         "unit": {
2026-06-19T23:28:15.5620680Z           "complete": true,
2026-06-19T23:28:15.5620819Z           "evidence": [
2026-06-19T23:28:15.5620947Z             {
2026-06-19T23:28:15.5621110Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.5621238Z               "line": 1495
2026-06-19T23:28:15.5621362Z             }
2026-06-19T23:28:15.5621486Z           ]
2026-06-19T23:28:15.5621606Z         }
2026-06-19T23:28:15.5621833Z       }
2026-06-19T23:28:15.5621959Z     },
2026-06-19T23:28:15.5622077Z     {
2026-06-19T23:28:15.5622250Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-19T23:28:15.5625954Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-19T23:28:15.5626231Z       "requiredStages": [
2026-06-19T23:28:15.5626354Z         "doc",
2026-06-19T23:28:15.5626488Z         "impl",
2026-06-19T23:28:15.5626612Z         "unit"
2026-06-19T23:28:15.5626727Z       ],
2026-06-19T23:28:15.5626866Z       "stages": {
2026-06-19T23:28:15.5626989Z         "doc": {
2026-06-19T23:28:15.5627128Z           "complete": true,
2026-06-19T23:28:15.5627256Z           "evidence": [
2026-06-19T23:28:15.5627381Z             {
2026-06-19T23:28:15.5627533Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5627667Z               "line": 395
2026-06-19T23:28:15.5627795Z             }
2026-06-19T23:28:15.5627919Z           ]
2026-06-19T23:28:15.5628039Z         },
2026-06-19T23:28:15.5628161Z         "impl": {
2026-06-19T23:28:15.5628295Z           "complete": true,
2026-06-19T23:28:15.5628422Z           "evidence": [
2026-06-19T23:28:15.5628549Z             {
2026-06-19T23:28:15.5628717Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5628840Z               "line": 75
2026-06-19T23:28:15.5629027Z             }
2026-06-19T23:28:15.5629140Z           ]
2026-06-19T23:28:15.5629251Z         },
2026-06-19T23:28:15.5629375Z         "int": {
2026-06-19T23:28:15.5629522Z           "complete": false,
2026-06-19T23:28:15.5629652Z           "evidence": []
2026-06-19T23:28:15.5629770Z         },
2026-06-19T23:28:15.5629900Z         "unit": {
2026-06-19T23:28:15.5630027Z           "complete": true,
2026-06-19T23:28:15.5630157Z           "evidence": [
2026-06-19T23:28:15.5630277Z             {
2026-06-19T23:28:15.5630462Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5630587Z               "line": 628
2026-06-19T23:28:15.5630709Z             }
2026-06-19T23:28:15.5630832Z           ]
2026-06-19T23:28:15.5630951Z         }
2026-06-19T23:28:15.5631078Z       }
2026-06-19T23:28:15.5631197Z     },
2026-06-19T23:28:15.5631313Z     {
2026-06-19T23:28:15.5631474Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-19T23:28:15.5631702Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-19T23:28:15.5631847Z       "requiredStages": [
2026-06-19T23:28:15.5631970Z         "impl",
2026-06-19T23:28:15.5632093Z         "unit"
2026-06-19T23:28:15.5632223Z       ],
2026-06-19T23:28:15.5632351Z       "stages": {
2026-06-19T23:28:15.5632481Z         "doc": {
2026-06-19T23:28:15.5632609Z           "complete": false,
2026-06-19T23:28:15.5632732Z           "evidence": []
2026-06-19T23:28:15.5632848Z         },
2026-06-19T23:28:15.5632971Z         "impl": {
2026-06-19T23:28:15.5633210Z           "complete": true,
2026-06-19T23:28:15.5633339Z           "evidence": [
2026-06-19T23:28:15.5633464Z             {
2026-06-19T23:28:15.5633633Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.5633762Z               "line": 168
2026-06-19T23:28:15.5633877Z             },
2026-06-19T23:28:15.5634004Z             {
2026-06-19T23:28:15.5634154Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.5634281Z               "line": 18
2026-06-19T23:28:15.5634411Z             },
2026-06-19T23:28:15.5634530Z             {
2026-06-19T23:28:15.5634691Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.5634925Z               "line": 100
2026-06-19T23:28:15.5635046Z             }
2026-06-19T23:28:15.5635168Z           ]
2026-06-19T23:28:15.5635297Z         },
2026-06-19T23:28:15.5635426Z         "int": {
2026-06-19T23:28:15.5635559Z           "complete": false,
2026-06-19T23:28:15.5635694Z           "evidence": []
2026-06-19T23:28:15.5635826Z         },
2026-06-19T23:28:15.5635953Z         "unit": {
2026-06-19T23:28:15.5636087Z           "complete": true,
2026-06-19T23:28:15.5636223Z           "evidence": [
2026-06-19T23:28:15.5636347Z             {
2026-06-19T23:28:15.5636514Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.5636644Z               "line": 853
2026-06-19T23:28:15.5636768Z             },
2026-06-19T23:28:15.5636886Z             {
2026-06-19T23:28:15.5637049Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.5637186Z               "line": 161
2026-06-19T23:28:15.5637311Z             },
2026-06-19T23:28:15.5637435Z             {
2026-06-19T23:28:15.5637602Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.5637730Z               "line": 233
2026-06-19T23:28:15.5637854Z             }
2026-06-19T23:28:15.5637979Z           ]
2026-06-19T23:28:15.5638107Z         }
2026-06-19T23:28:15.5638232Z       }
2026-06-19T23:28:15.5638355Z     },
2026-06-19T23:28:15.5638484Z     {
2026-06-19T23:28:15.5638651Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-19T23:28:15.5639215Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-19T23:28:15.5639353Z       "requiredStages": [
2026-06-19T23:28:15.5639486Z         "impl",
2026-06-19T23:28:15.5639615Z         "unit"
2026-06-19T23:28:15.5639734Z       ],
2026-06-19T23:28:15.5639864Z       "stages": {
2026-06-19T23:28:15.5639988Z         "doc": {
2026-06-19T23:28:15.5640121Z           "complete": true,
2026-06-19T23:28:15.5640249Z           "evidence": [
2026-06-19T23:28:15.5640383Z             {
2026-06-19T23:28:15.5640546Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5640673Z               "line": 220
2026-06-19T23:28:15.5640799Z             }
2026-06-19T23:28:15.5640916Z           ]
2026-06-19T23:28:15.5641041Z         },
2026-06-19T23:28:15.5641166Z         "impl": {
2026-06-19T23:28:15.5641307Z           "complete": true,
2026-06-19T23:28:15.5641430Z           "evidence": [
2026-06-19T23:28:15.5641553Z             {
2026-06-19T23:28:15.5641738Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.5641854Z               "line": 316
2026-06-19T23:28:15.5641981Z             },
2026-06-19T23:28:15.5642092Z             {
2026-06-19T23:28:15.5642262Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.5642397Z               "line": 356
2026-06-19T23:28:15.5642516Z             },
2026-06-19T23:28:15.5642644Z             {
2026-06-19T23:28:15.5642811Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.5642959Z               "line": 578
2026-06-19T23:28:15.5643089Z             },
2026-06-19T23:28:15.5643212Z             {
2026-06-19T23:28:15.5643375Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-19T23:28:15.5643502Z               "line": 77
2026-06-19T23:28:15.5643632Z             }
2026-06-19T23:28:15.5643875Z           ]
2026-06-19T23:28:15.5644005Z         },
2026-06-19T23:28:15.5644131Z         "int": {
2026-06-19T23:28:15.5644259Z           "complete": false,
2026-06-19T23:28:15.5644394Z           "evidence": []
2026-06-19T23:28:15.5644503Z         },
2026-06-19T23:28:15.5644637Z         "unit": {
2026-06-19T23:28:15.5644761Z           "complete": true,
2026-06-19T23:28:15.5644898Z           "evidence": [
2026-06-19T23:28:15.5645019Z             {
2026-06-19T23:28:15.5645189Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.5645324Z               "line": 747
2026-06-19T23:28:15.5645443Z             },
2026-06-19T23:28:15.5645681Z             {
2026-06-19T23:28:15.5645847Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.5645972Z               "line": 785
2026-06-19T23:28:15.5646100Z             },
2026-06-19T23:28:15.5646225Z             {
2026-06-19T23:28:15.5646400Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-19T23:28:15.5646538Z               "line": 166
2026-06-19T23:28:15.5646666Z             }
2026-06-19T23:28:15.5646774Z           ]
2026-06-19T23:28:15.5646894Z         }
2026-06-19T23:28:15.5647017Z       }
2026-06-19T23:28:15.5647141Z     },
2026-06-19T23:28:15.5647261Z     {
2026-06-19T23:28:15.5647431Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-19T23:28:15.5648056Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-19T23:28:15.5648196Z       "requiredStages": [
2026-06-19T23:28:15.5648333Z         "impl",
2026-06-19T23:28:15.5648463Z         "unit"
2026-06-19T23:28:15.5648581Z       ],
2026-06-19T23:28:15.5648714Z       "stages": {
2026-06-19T23:28:15.5648830Z         "doc": {
2026-06-19T23:28:15.5649039Z           "complete": false,
2026-06-19T23:28:15.5649155Z           "evidence": []
2026-06-19T23:28:15.5649286Z         },
2026-06-19T23:28:15.5649415Z         "impl": {
2026-06-19T23:28:15.5649538Z           "complete": true,
2026-06-19T23:28:15.5649674Z           "evidence": [
2026-06-19T23:28:15.5649789Z             {
2026-06-19T23:28:15.5649965Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-19T23:28:15.5650095Z               "line": 22
2026-06-19T23:28:15.5650219Z             },
2026-06-19T23:28:15.5650342Z             {
2026-06-19T23:28:15.5650504Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.5650632Z               "line": 487
2026-06-19T23:28:15.5650758Z             },
2026-06-19T23:28:15.5650882Z             {
2026-06-19T23:28:15.5651058Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-19T23:28:15.5651181Z               "line": 17
2026-06-19T23:28:15.5651305Z             },
2026-06-19T23:28:15.5651426Z             {
2026-06-19T23:28:15.5651601Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-19T23:28:15.5651722Z               "line": 147
2026-06-19T23:28:15.5651848Z             },
2026-06-19T23:28:15.5651972Z             {
2026-06-19T23:28:15.5652155Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.5652294Z               "line": 226
2026-06-19T23:28:15.5652409Z             },
2026-06-19T23:28:15.5652537Z             {
2026-06-19T23:28:15.5652704Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.5652832Z               "line": 251
2026-06-19T23:28:15.5652947Z             },
2026-06-19T23:28:15.5653071Z             {
2026-06-19T23:28:15.5653248Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.5653376Z               "line": 277
2026-06-19T23:28:15.5653505Z             },
2026-06-19T23:28:15.5653630Z             {
2026-06-19T23:28:15.5653800Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.5653926Z               "line": 124
2026-06-19T23:28:15.5654048Z             },
2026-06-19T23:28:15.5654269Z             {
2026-06-19T23:28:15.5654439Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.5654565Z               "line": 224
2026-06-19T23:28:15.5654687Z             }
2026-06-19T23:28:15.5654810Z           ]
2026-06-19T23:28:15.5654940Z         },
2026-06-19T23:28:15.5655063Z         "int": {
2026-06-19T23:28:15.5655211Z           "complete": false,
2026-06-19T23:28:15.5655335Z           "evidence": []
2026-06-19T23:28:15.5655453Z         },
2026-06-19T23:28:15.5655574Z         "unit": {
2026-06-19T23:28:15.5655711Z           "complete": true,
2026-06-19T23:28:15.5655846Z           "evidence": [
2026-06-19T23:28:15.5655955Z             {
2026-06-19T23:28:15.5656222Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-19T23:28:15.5656350Z               "line": 63
2026-06-19T23:28:15.5656485Z             },
2026-06-19T23:28:15.5656603Z             {
2026-06-19T23:28:15.5656775Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-19T23:28:15.5656917Z               "line": 73
2026-06-19T23:28:15.5657036Z             },
2026-06-19T23:28:15.5657165Z             {
2026-06-19T23:28:15.5657324Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-19T23:28:15.5657463Z               "line": 85
2026-06-19T23:28:15.5657597Z             },
2026-06-19T23:28:15.5657720Z             {
2026-06-19T23:28:15.5657892Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-19T23:28:15.5658020Z               "line": 346
2026-06-19T23:28:15.5658146Z             },
2026-06-19T23:28:15.5658269Z             {
2026-06-19T23:28:15.5658436Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-19T23:28:15.5658564Z               "line": 281
2026-06-19T23:28:15.5658684Z             },
2026-06-19T23:28:15.5658812Z             {
2026-06-19T23:28:15.5659057Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-19T23:28:15.5659203Z               "line": 322
2026-06-19T23:28:15.5659318Z             },
2026-06-19T23:28:15.5659447Z             {
2026-06-19T23:28:15.5659609Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-19T23:28:15.5659739Z               "line": 360
2026-06-19T23:28:15.5659865Z             },
2026-06-19T23:28:15.5659989Z             {
2026-06-19T23:28:15.5660173Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.5660302Z               "line": 688
2026-06-19T23:28:15.5660426Z             },
2026-06-19T23:28:15.5660549Z             {
2026-06-19T23:28:15.5660712Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.5660844Z               "line": 397
2026-06-19T23:28:15.5660965Z             },
2026-06-19T23:28:15.5661094Z             {
2026-06-19T23:28:15.5661265Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.5661393Z               "line": 440
2026-06-19T23:28:15.5661507Z             }
2026-06-19T23:28:15.5661628Z           ]
2026-06-19T23:28:15.5661750Z         }
2026-06-19T23:28:15.5661866Z       }
2026-06-19T23:28:15.5662000Z     },
2026-06-19T23:28:15.5662123Z     {
2026-06-19T23:28:15.5662277Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-19T23:28:15.5662537Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-19T23:28:15.5662674Z       "requiredStages": [
2026-06-19T23:28:15.5662806Z         "impl",
2026-06-19T23:28:15.5662926Z         "unit"
2026-06-19T23:28:15.5663035Z       ],
2026-06-19T23:28:15.5663149Z       "stages": {
2026-06-19T23:28:15.5663279Z         "doc": {
2026-06-19T23:28:15.5663416Z           "complete": false,
2026-06-19T23:28:15.5663541Z           "evidence": []
2026-06-19T23:28:15.5663665Z         },
2026-06-19T23:28:15.5663798Z         "impl": {
2026-06-19T23:28:15.5663927Z           "complete": true,
2026-06-19T23:28:15.5664055Z           "evidence": [
2026-06-19T23:28:15.5664185Z             {
2026-06-19T23:28:15.5664355Z               "path": "crates/spt-term/src/reader.rs",
2026-06-19T23:28:15.5664481Z               "line": 169
2026-06-19T23:28:15.5664718Z             }
2026-06-19T23:28:15.5664839Z           ]
2026-06-19T23:28:15.5664971Z         },
2026-06-19T23:28:15.5665096Z         "int": {
2026-06-19T23:28:15.5665228Z           "complete": true,
2026-06-19T23:28:15.5665360Z           "evidence": [
2026-06-19T23:28:15.5665486Z             {
2026-06-19T23:28:15.5665652Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-19T23:28:15.5665781Z               "line": 44
2026-06-19T23:28:15.5665909Z             },
2026-06-19T23:28:15.5666028Z             {
2026-06-19T23:28:15.5666196Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-19T23:28:15.5666328Z               "line": 66
2026-06-19T23:28:15.5666539Z             }
2026-06-19T23:28:15.5666672Z           ]
2026-06-19T23:28:15.5666787Z         },
2026-06-19T23:28:15.5666920Z         "unit": {
2026-06-19T23:28:15.5667045Z           "complete": true,
2026-06-19T23:28:15.5667182Z           "evidence": [
2026-06-19T23:28:15.5667306Z             {
2026-06-19T23:28:15.5667477Z               "path": "crates/spt-term/src/reader.rs",
2026-06-19T23:28:15.5667615Z               "line": 186
2026-06-19T23:28:15.5667730Z             },
2026-06-19T23:28:15.5667847Z             {
2026-06-19T23:28:15.5668004Z               "path": "crates/spt-term/src/reader.rs",
2026-06-19T23:28:15.5668142Z               "line": 238
2026-06-19T23:28:15.5668266Z             },
2026-06-19T23:28:15.5668386Z             {
2026-06-19T23:28:15.5668552Z               "path": "crates/spt-term/src/reader.rs",
2026-06-19T23:28:15.5668677Z               "line": 266
2026-06-19T23:28:15.5668800Z             }
2026-06-19T23:28:15.5668929Z           ]
2026-06-19T23:28:15.5669139Z         }
2026-06-19T23:28:15.5669268Z       }
2026-06-19T23:28:15.5669377Z     },
2026-06-19T23:28:15.5669506Z     {
2026-06-19T23:28:15.5669673Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-19T23:28:15.5670164Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-19T23:28:15.5670299Z       "requiredStages": [
2026-06-19T23:28:15.5670425Z         "impl",
2026-06-19T23:28:15.5670559Z         "unit",
2026-06-19T23:28:15.5670676Z         "int"
2026-06-19T23:28:15.5670804Z       ],
2026-06-19T23:28:15.5670929Z       "stages": {
2026-06-19T23:28:15.5671057Z         "doc": {
2026-06-19T23:28:15.5671186Z           "complete": false,
2026-06-19T23:28:15.5671330Z           "evidence": []
2026-06-19T23:28:15.5671457Z         },
2026-06-19T23:28:15.5671578Z         "impl": {
2026-06-19T23:28:15.5671720Z           "complete": true,
2026-06-19T23:28:15.5671845Z           "evidence": [
2026-06-19T23:28:15.5671977Z             {
2026-06-19T23:28:15.5672145Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5672278Z               "line": 178
2026-06-19T23:28:15.5672411Z             },
2026-06-19T23:28:15.5672531Z             {
2026-06-19T23:28:15.5672707Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5672846Z               "line": 226
2026-06-19T23:28:15.5672973Z             },
2026-06-19T23:28:15.5673092Z             {
2026-06-19T23:28:15.5673257Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.5673390Z               "line": 79
2026-06-19T23:28:15.5673510Z             },
2026-06-19T23:28:15.5673642Z             {
2026-06-19T23:28:15.5673792Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.5673925Z               "line": 52
2026-06-19T23:28:15.5674053Z             },
2026-06-19T23:28:15.5674168Z             {
2026-06-19T23:28:15.5674339Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5674468Z               "line": 251
2026-06-19T23:28:15.5674596Z             },
2026-06-19T23:28:15.5674721Z             {
2026-06-19T23:28:15.5674893Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5675032Z               "line": 27
2026-06-19T23:28:15.5675145Z             },
2026-06-19T23:28:15.5675370Z             {
2026-06-19T23:28:15.5675536Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5675671Z               "line": 79
2026-06-19T23:28:15.5675803Z             },
2026-06-19T23:28:15.5675935Z             {
2026-06-19T23:28:15.5676099Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5676231Z               "line": 102
2026-06-19T23:28:15.5676351Z             },
2026-06-19T23:28:15.5676474Z             {
2026-06-19T23:28:15.5676647Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.5676780Z               "line": 116
2026-06-19T23:28:15.5676898Z             }
2026-06-19T23:28:15.5677127Z           ]
2026-06-19T23:28:15.5677247Z         },
2026-06-19T23:28:15.5677375Z         "int": {
2026-06-19T23:28:15.5677509Z           "complete": true,
2026-06-19T23:28:15.5677634Z           "evidence": [
2026-06-19T23:28:15.5677756Z             {
2026-06-19T23:28:15.5677940Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-19T23:28:15.5678076Z               "line": 43
2026-06-19T23:28:15.5678204Z             }
2026-06-19T23:28:15.5678322Z           ]
2026-06-19T23:28:15.5678431Z         },
2026-06-19T23:28:15.5678554Z         "unit": {
2026-06-19T23:28:15.5678689Z           "complete": true,
2026-06-19T23:28:15.5678816Z           "evidence": [
2026-06-19T23:28:15.5679003Z             {
2026-06-19T23:28:15.5679175Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5679299Z               "line": 678
2026-06-19T23:28:15.5679422Z             },
2026-06-19T23:28:15.5679552Z             {
2026-06-19T23:28:15.5679708Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5679843Z               "line": 469
2026-06-19T23:28:15.5679966Z             },
2026-06-19T23:28:15.5680089Z             {
2026-06-19T23:28:15.5680266Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5680395Z               "line": 124
2026-06-19T23:28:15.5680529Z             },
2026-06-19T23:28:15.5680652Z             {
2026-06-19T23:28:15.5680816Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5680953Z               "line": 143
2026-06-19T23:28:15.5681071Z             },
2026-06-19T23:28:15.5684142Z             {
2026-06-19T23:28:15.5684361Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5684494Z               "line": 160
2026-06-19T23:28:15.5684623Z             },
2026-06-19T23:28:15.5684751Z             {
2026-06-19T23:28:15.5684923Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5685057Z               "line": 187
2026-06-19T23:28:15.5685199Z             },
2026-06-19T23:28:15.5685329Z             {
2026-06-19T23:28:15.5685499Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-19T23:28:15.5685634Z               "line": 206
2026-06-19T23:28:15.5685752Z             },
2026-06-19T23:28:15.5685877Z             {
2026-06-19T23:28:15.5686043Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.5686183Z               "line": 229
2026-06-19T23:28:15.5686298Z             }
2026-06-19T23:28:15.5686419Z           ]
2026-06-19T23:28:15.5686543Z         }
2026-06-19T23:28:15.5686664Z       }
2026-06-19T23:28:15.5686786Z     },
2026-06-19T23:28:15.5686901Z     {
2026-06-19T23:28:15.5687077Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-19T23:28:15.5687787Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-19T23:28:15.5687926Z       "requiredStages": [
2026-06-19T23:28:15.5688054Z         "impl",
2026-06-19T23:28:15.5688180Z         "unit"
2026-06-19T23:28:15.5688307Z       ],
2026-06-19T23:28:15.5688436Z       "stages": {
2026-06-19T23:28:15.5688556Z         "doc": {
2026-06-19T23:28:15.5688698Z           "complete": false,
2026-06-19T23:28:15.5689086Z           "evidence": []
2026-06-19T23:28:15.5689216Z         },
2026-06-19T23:28:15.5689334Z         "impl": {
2026-06-19T23:28:15.5689473Z           "complete": true,
2026-06-19T23:28:15.5689601Z           "evidence": [
2026-06-19T23:28:15.5689725Z             {
2026-06-19T23:28:15.5689893Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5690025Z               "line": 1014
2026-06-19T23:28:15.5690150Z             },
2026-06-19T23:28:15.5690273Z             {
2026-06-19T23:28:15.5690441Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5690569Z               "line": 1240
2026-06-19T23:28:15.5690793Z             }
2026-06-19T23:28:15.5690912Z           ]
2026-06-19T23:28:15.5691037Z         },
2026-06-19T23:28:15.5691160Z         "int": {
2026-06-19T23:28:15.5691294Z           "complete": false,
2026-06-19T23:28:15.5691423Z           "evidence": []
2026-06-19T23:28:15.5691551Z         },
2026-06-19T23:28:15.5691679Z         "unit": {
2026-06-19T23:28:15.5691806Z           "complete": true,
2026-06-19T23:28:15.5691938Z           "evidence": [
2026-06-19T23:28:15.5692059Z             {
2026-06-19T23:28:15.5692243Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-19T23:28:15.5692364Z               "line": 161
2026-06-19T23:28:15.5692487Z             }
2026-06-19T23:28:15.5692607Z           ]
2026-06-19T23:28:15.5692731Z         }
2026-06-19T23:28:15.5692859Z       }
2026-06-19T23:28:15.5692984Z     },
2026-06-19T23:28:15.5693098Z     {
2026-06-19T23:28:15.5693270Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-19T23:28:15.5695120Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-19T23:28:15.5695293Z       "requiredStages": [
2026-06-19T23:28:15.5695425Z         "impl",
2026-06-19T23:28:15.5695550Z         "unit"
2026-06-19T23:28:15.5695684Z       ],
2026-06-19T23:28:15.5695812Z       "stages": {
2026-06-19T23:28:15.5695941Z         "doc": {
2026-06-19T23:28:15.5696084Z           "complete": false,
2026-06-19T23:28:15.5696214Z           "evidence": []
2026-06-19T23:28:15.5696342Z         },
2026-06-19T23:28:15.5696486Z         "impl": {
2026-06-19T23:28:15.5696623Z           "complete": true,
2026-06-19T23:28:15.5696757Z           "evidence": [
2026-06-19T23:28:15.5696886Z             {
2026-06-19T23:28:15.5697069Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.5697199Z               "line": 257
2026-06-19T23:28:15.5697341Z             }
2026-06-19T23:28:15.5697456Z           ]
2026-06-19T23:28:15.5697576Z         },
2026-06-19T23:28:15.5697704Z         "int": {
2026-06-19T23:28:15.5697848Z           "complete": false,
2026-06-19T23:28:15.5697975Z           "evidence": []
2026-06-19T23:28:15.5698101Z         },
2026-06-19T23:28:15.5698219Z         "unit": {
2026-06-19T23:28:15.5698352Z           "complete": true,
2026-06-19T23:28:15.5698487Z           "evidence": [
2026-06-19T23:28:15.5698605Z             {
2026-06-19T23:28:15.5698778Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.5698911Z               "line": 360
2026-06-19T23:28:15.5699116Z             }
2026-06-19T23:28:15.5699243Z           ]
2026-06-19T23:28:15.5699367Z         }
2026-06-19T23:28:15.5699490Z       }
2026-06-19T23:28:15.5699612Z     },
2026-06-19T23:28:15.5699737Z     {
2026-06-19T23:28:15.5699884Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-19T23:28:15.5701768Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-19T23:28:15.5702030Z       "requiredStages": [
2026-06-19T23:28:15.5702157Z         "impl",
2026-06-19T23:28:15.5702380Z         "unit"
2026-06-19T23:28:15.5702493Z       ],
2026-06-19T23:28:15.5702614Z       "stages": {
2026-06-19T23:28:15.5702742Z         "doc": {
2026-06-19T23:28:15.5702876Z           "complete": false,
2026-06-19T23:28:15.5703000Z           "evidence": []
2026-06-19T23:28:15.5703128Z         },
2026-06-19T23:28:15.5703262Z         "impl": {
2026-06-19T23:28:15.5703405Z           "complete": true,
2026-06-19T23:28:15.5703530Z           "evidence": [
2026-06-19T23:28:15.5703658Z             {
2026-06-19T23:28:15.5703835Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5703968Z               "line": 1018
2026-06-19T23:28:15.5704096Z             },
2026-06-19T23:28:15.5704221Z             {
2026-06-19T23:28:15.5704402Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5704531Z               "line": 283
2026-06-19T23:28:15.5704668Z             },
2026-06-19T23:28:15.5704791Z             {
2026-06-19T23:28:15.5704966Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5705099Z               "line": 316
2026-06-19T23:28:15.5705224Z             },
2026-06-19T23:28:15.5705351Z             {
2026-06-19T23:28:15.5705500Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-19T23:28:15.5705638Z               "line": 26
2026-06-19T23:28:15.5705763Z             }
2026-06-19T23:28:15.5705891Z           ]
2026-06-19T23:28:15.5706024Z         },
2026-06-19T23:28:15.5706148Z         "int": {
2026-06-19T23:28:15.5706281Z           "complete": false,
2026-06-19T23:28:15.5706407Z           "evidence": []
2026-06-19T23:28:15.5706539Z         },
2026-06-19T23:28:15.5706668Z         "unit": {
2026-06-19T23:28:15.5706802Z           "complete": true,
2026-06-19T23:28:15.5706940Z           "evidence": [
2026-06-19T23:28:15.5707065Z             {
2026-06-19T23:28:15.5707226Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-19T23:28:15.5707351Z               "line": 271
2026-06-19T23:28:15.5707483Z             },
2026-06-19T23:28:15.5707596Z             {
2026-06-19T23:28:15.5707764Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-19T23:28:15.5707896Z               "line": 348
2026-06-19T23:28:15.5708021Z             }
2026-06-19T23:28:15.5708150Z           ]
2026-06-19T23:28:15.5708269Z         }
2026-06-19T23:28:15.5708394Z       }
2026-06-19T23:28:15.5708503Z     },
2026-06-19T23:28:15.5708632Z     {
2026-06-19T23:28:15.5708784Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-19T23:28:15.5709094Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-19T23:28:15.5709237Z       "requiredStages": [
2026-06-19T23:28:15.5709362Z         "impl",
2026-06-19T23:28:15.5709490Z         "unit"
2026-06-19T23:28:15.5709615Z       ],
2026-06-19T23:28:15.5709728Z       "stages": {
2026-06-19T23:28:15.5709851Z         "doc": {
2026-06-19T23:28:15.5709989Z           "complete": false,
2026-06-19T23:28:15.5710125Z           "evidence": []
2026-06-19T23:28:15.5710259Z         },
2026-06-19T23:28:15.5710393Z         "impl": {
2026-06-19T23:28:15.5710521Z           "complete": true,
2026-06-19T23:28:15.5710659Z           "evidence": [
2026-06-19T23:28:15.5710778Z             {
2026-06-19T23:28:15.5710942Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5711069Z               "line": 40
2026-06-19T23:28:15.5711294Z             },
2026-06-19T23:28:15.5711422Z             {
2026-06-19T23:28:15.5711585Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5711722Z               "line": 103
2026-06-19T23:28:15.5711843Z             },
2026-06-19T23:28:15.5711965Z             {
2026-06-19T23:28:15.5712129Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5712257Z               "line": 218
2026-06-19T23:28:15.5712385Z             },
2026-06-19T23:28:15.5712511Z             {
2026-06-19T23:28:15.5712675Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5712799Z               "line": 323
2026-06-19T23:28:15.5713026Z             }
2026-06-19T23:28:15.5713145Z           ]
2026-06-19T23:28:15.5713255Z         },
2026-06-19T23:28:15.5713378Z         "int": {
2026-06-19T23:28:15.5713513Z           "complete": false,
2026-06-19T23:28:15.5713645Z           "evidence": []
2026-06-19T23:28:15.5713775Z         },
2026-06-19T23:28:15.5713894Z         "unit": {
2026-06-19T23:28:15.5714037Z           "complete": true,
2026-06-19T23:28:15.5714156Z           "evidence": [
2026-06-19T23:28:15.5714289Z             {
2026-06-19T23:28:15.5714443Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5714580Z               "line": 361
2026-06-19T23:28:15.5714705Z             },
2026-06-19T23:28:15.5714823Z             {
2026-06-19T23:28:15.5714986Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5715110Z               "line": 433
2026-06-19T23:28:15.5715242Z             },
2026-06-19T23:28:15.5715351Z             {
2026-06-19T23:28:15.5715516Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5715659Z               "line": 496
2026-06-19T23:28:15.5715775Z             },
2026-06-19T23:28:15.5715902Z             {
2026-06-19T23:28:15.5716060Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5716193Z               "line": 517
2026-06-19T23:28:15.5716323Z             }
2026-06-19T23:28:15.5716451Z           ]
2026-06-19T23:28:15.5716579Z         }
2026-06-19T23:28:15.5716694Z       }
2026-06-19T23:28:15.5716813Z     },
2026-06-19T23:28:15.5716933Z     {
2026-06-19T23:28:15.5717100Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-19T23:28:15.5719578Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-19T23:28:15.5719754Z       "requiredStages": [
2026-06-19T23:28:15.5719879Z         "impl",
2026-06-19T23:28:15.5720016Z         "unit"
2026-06-19T23:28:15.5720131Z       ],
2026-06-19T23:28:15.5720264Z       "stages": {
2026-06-19T23:28:15.5720387Z         "doc": {
2026-06-19T23:28:15.5720516Z           "complete": false,
2026-06-19T23:28:15.5720647Z           "evidence": []
2026-06-19T23:28:15.5720776Z         },
2026-06-19T23:28:15.5720906Z         "impl": {
2026-06-19T23:28:15.5721028Z           "complete": true,
2026-06-19T23:28:15.5721163Z           "evidence": [
2026-06-19T23:28:15.5721291Z             {
2026-06-19T23:28:15.5721478Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.5721606Z               "line": 402
2026-06-19T23:28:15.5721735Z             },
2026-06-19T23:28:15.5721863Z             {
2026-06-19T23:28:15.5722039Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.5722273Z               "line": 446
2026-06-19T23:28:15.5722389Z             }
2026-06-19T23:28:15.5722507Z           ]
2026-06-19T23:28:15.5722635Z         },
2026-06-19T23:28:15.5722765Z         "int": {
2026-06-19T23:28:15.5722893Z           "complete": false,
2026-06-19T23:28:15.5723023Z           "evidence": []
2026-06-19T23:28:15.5723146Z         },
2026-06-19T23:28:15.5723269Z         "unit": {
2026-06-19T23:28:15.5723407Z           "complete": true,
2026-06-19T23:28:15.5723528Z           "evidence": [
2026-06-19T23:28:15.5723658Z             {
2026-06-19T23:28:15.5723825Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.5724068Z               "line": 910
2026-06-19T23:28:15.5724200Z             }
2026-06-19T23:28:15.5724321Z           ]
2026-06-19T23:28:15.5724450Z         }
2026-06-19T23:28:15.5724563Z       }
2026-06-19T23:28:15.5724684Z     },
2026-06-19T23:28:15.5724811Z     {
2026-06-19T23:28:15.5724979Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-19T23:28:15.5725173Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-19T23:28:15.5725299Z       "requiredStages": [
2026-06-19T23:28:15.5725431Z         "impl",
2026-06-19T23:28:15.5725556Z         "unit"
2026-06-19T23:28:15.5725680Z       ],
2026-06-19T23:28:15.5725807Z       "stages": {
2026-06-19T23:28:15.5725931Z         "doc": {
2026-06-19T23:28:15.5726071Z           "complete": false,
2026-06-19T23:28:15.5726200Z           "evidence": []
2026-06-19T23:28:15.5726335Z         },
2026-06-19T23:28:15.5726462Z         "impl": {
2026-06-19T23:28:15.5726592Z           "complete": true,
2026-06-19T23:28:15.5726729Z           "evidence": [
2026-06-19T23:28:15.5726863Z             {
2026-06-19T23:28:15.5727030Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5727149Z               "line": 116
2026-06-19T23:28:15.5727273Z             },
2026-06-19T23:28:15.5727392Z             {
2026-06-19T23:28:15.5727565Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5727702Z               "line": 211
2026-06-19T23:28:15.5727827Z             }
2026-06-19T23:28:15.5727955Z           ]
2026-06-19T23:28:15.5728074Z         },
2026-06-19T23:28:15.5728204Z         "int": {
2026-06-19T23:28:15.5728332Z           "complete": false,
2026-06-19T23:28:15.5728466Z           "evidence": []
2026-06-19T23:28:15.5728594Z         },
2026-06-19T23:28:15.5728711Z         "unit": {
2026-06-19T23:28:15.5728841Z           "complete": true,
2026-06-19T23:28:15.5729031Z           "evidence": [
2026-06-19T23:28:15.5729161Z             {
2026-06-19T23:28:15.5729313Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5729457Z               "line": 388
2026-06-19T23:28:15.5729576Z             },
2026-06-19T23:28:15.5729699Z             {
2026-06-19T23:28:15.5729852Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.5729980Z               "line": 469
2026-06-19T23:28:15.5730096Z             }
2026-06-19T23:28:15.5730205Z           ]
2026-06-19T23:28:15.5730333Z         }
2026-06-19T23:28:15.5730463Z       }
2026-06-19T23:28:15.5730581Z     },
2026-06-19T23:28:15.5730711Z     {
2026-06-19T23:28:15.5730881Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-19T23:28:15.5732052Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-19T23:28:15.5732194Z       "requiredStages": [
2026-06-19T23:28:15.5732329Z         "impl",
2026-06-19T23:28:15.5732457Z         "unit"
2026-06-19T23:28:15.5732576Z       ],
2026-06-19T23:28:15.5732701Z       "stages": {
2026-06-19T23:28:15.5732824Z         "doc": {
2026-06-19T23:28:15.5732959Z           "complete": true,
2026-06-19T23:28:15.5733095Z           "evidence": [
2026-06-19T23:28:15.5733325Z             {
2026-06-19T23:28:15.5733491Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5733616Z               "line": 206
2026-06-19T23:28:15.5733744Z             }
2026-06-19T23:28:15.5733867Z           ]
2026-06-19T23:28:15.5733995Z         },
2026-06-19T23:28:15.5734117Z         "impl": {
2026-06-19T23:28:15.5734256Z           "complete": true,
2026-06-19T23:28:15.5734385Z           "evidence": [
2026-06-19T23:28:15.5734508Z             {
2026-06-19T23:28:15.5734676Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5734804Z               "line": 691
2026-06-19T23:28:15.5734934Z             },
2026-06-19T23:28:15.5735157Z             {
2026-06-19T23:28:15.5735328Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5735453Z               "line": 791
2026-06-19T23:28:15.5735577Z             },
2026-06-19T23:28:15.5735705Z             {
2026-06-19T23:28:15.5735873Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5736010Z               "line": 1120
2026-06-19T23:28:15.5736141Z             },
2026-06-19T23:28:15.5736263Z             {
2026-06-19T23:28:15.5736438Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.5736562Z               "line": 184
2026-06-19T23:28:15.5736693Z             }
2026-06-19T23:28:15.5736808Z           ]
2026-06-19T23:28:15.5736928Z         },
2026-06-19T23:28:15.5737055Z         "int": {
2026-06-19T23:28:15.5737185Z           "complete": false,
2026-06-19T23:28:15.5737327Z           "evidence": []
2026-06-19T23:28:15.5737448Z         },
2026-06-19T23:28:15.5737577Z         "unit": {
2026-06-19T23:28:15.5737719Z           "complete": true,
2026-06-19T23:28:15.5737857Z           "evidence": [
2026-06-19T23:28:15.5737976Z             {
2026-06-19T23:28:15.5738144Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5738272Z               "line": 1169
2026-06-19T23:28:15.5738397Z             },
2026-06-19T23:28:15.5738534Z             {
2026-06-19T23:28:15.5738712Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-19T23:28:15.5738843Z               "line": 44
2026-06-19T23:28:15.5739055Z             },
2026-06-19T23:28:15.5739177Z             {
2026-06-19T23:28:15.5739348Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-19T23:28:15.5739464Z               "line": 52
2026-06-19T23:28:15.5739596Z             },
2026-06-19T23:28:15.5739712Z             {
2026-06-19T23:28:15.5739882Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-19T23:28:15.5740022Z               "line": 57
2026-06-19T23:28:15.5740145Z             },
2026-06-19T23:28:15.5740274Z             {
2026-06-19T23:28:15.5740445Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-19T23:28:15.5740583Z               "line": 54
2026-06-19T23:28:15.5740708Z             }
2026-06-19T23:28:15.5740831Z           ]
2026-06-19T23:28:15.5740952Z         }
2026-06-19T23:28:15.5741075Z       }
2026-06-19T23:28:15.5741194Z     },
2026-06-19T23:28:15.5741319Z     {
2026-06-19T23:28:15.5741483Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-19T23:28:15.5741753Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-19T23:28:15.5741896Z       "requiredStages": [
2026-06-19T23:28:15.5742021Z         "impl",
2026-06-19T23:28:15.5742139Z         "unit"
2026-06-19T23:28:15.5742264Z       ],
2026-06-19T23:28:15.5742387Z       "stages": {
2026-06-19T23:28:15.5742516Z         "doc": {
2026-06-19T23:28:15.5742655Z           "complete": false,
2026-06-19T23:28:15.5742787Z           "evidence": []
2026-06-19T23:28:15.5742922Z         },
2026-06-19T23:28:15.5743041Z         "impl": {
2026-06-19T23:28:15.5743179Z           "complete": true,
2026-06-19T23:28:15.5743313Z           "evidence": [
2026-06-19T23:28:15.5743445Z             {
2026-06-19T23:28:15.5743618Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5743857Z               "line": 26
2026-06-19T23:28:15.5743985Z             },
2026-06-19T23:28:15.5744110Z             {
2026-06-19T23:28:15.5744280Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5744413Z               "line": 135
2026-06-19T23:28:15.5744541Z             },
2026-06-19T23:28:15.5744663Z             {
2026-06-19T23:28:15.5744845Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-19T23:28:15.5744973Z               "line": 26
2026-06-19T23:28:15.5745092Z             },
2026-06-19T23:28:15.5745226Z             {
2026-06-19T23:28:15.5745402Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-19T23:28:15.5745678Z               "line": 237
2026-06-19T23:28:15.5745804Z             }
2026-06-19T23:28:15.5745927Z           ]
2026-06-19T23:28:15.5746046Z         },
2026-06-19T23:28:15.5746175Z         "int": {
2026-06-19T23:28:15.5746318Z           "complete": false,
2026-06-19T23:28:15.5746438Z           "evidence": []
2026-06-19T23:28:15.5746570Z         },
2026-06-19T23:28:15.5746701Z         "unit": {
2026-06-19T23:28:15.5746842Z           "complete": true,
2026-06-19T23:28:15.5746979Z           "evidence": [
2026-06-19T23:28:15.5747108Z             {
2026-06-19T23:28:15.5747282Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5747407Z               "line": 161
2026-06-19T23:28:15.5747540Z             },
2026-06-19T23:28:15.5747664Z             {
2026-06-19T23:28:15.5747836Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5747969Z               "line": 170
2026-06-19T23:28:15.5748093Z             },
2026-06-19T23:28:15.5748221Z             {
2026-06-19T23:28:15.5748394Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5748536Z               "line": 179
2026-06-19T23:28:15.5748657Z             },
2026-06-19T23:28:15.5748780Z             {
2026-06-19T23:28:15.5749010Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5749137Z               "line": 190
2026-06-19T23:28:15.5749276Z             },
2026-06-19T23:28:15.5749404Z             {
2026-06-19T23:28:15.5749587Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5749723Z               "line": 199
2026-06-19T23:28:15.5749851Z             },
2026-06-19T23:28:15.5749976Z             {
2026-06-19T23:28:15.5750137Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5750262Z               "line": 216
2026-06-19T23:28:15.5750381Z             },
2026-06-19T23:28:15.5750499Z             {
2026-06-19T23:28:15.5750667Z               "path": "crates/spt-live/src/context.rs",
2026-06-19T23:28:15.5750800Z               "line": 242
2026-06-19T23:28:15.5750935Z             },
2026-06-19T23:28:15.5751058Z             {
2026-06-19T23:28:15.5751226Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.5751354Z               "line": 295
2026-06-19T23:28:15.5751483Z             },
2026-06-19T23:28:15.5751602Z             {
2026-06-19T23:28:15.5751773Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.5751903Z               "line": 244
2026-06-19T23:28:15.5752030Z             },
2026-06-19T23:28:15.5752163Z             {
2026-06-19T23:28:15.5752333Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-19T23:28:15.5752466Z               "line": 265
2026-06-19T23:28:15.5752600Z             },
2026-06-19T23:28:15.5752727Z             {
2026-06-19T23:28:15.5752900Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-19T23:28:15.5753033Z               "line": 293
2026-06-19T23:28:15.5753153Z             },
2026-06-19T23:28:15.5753281Z             {
2026-06-19T23:28:15.5753463Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-19T23:28:15.5753605Z               "line": 317
2026-06-19T23:28:15.5753730Z             },
2026-06-19T23:28:15.5753858Z             {
2026-06-19T23:28:15.5754035Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-19T23:28:15.5754287Z               "line": 327
2026-06-19T23:28:15.5754408Z             },
2026-06-19T23:28:15.5754540Z             {
2026-06-19T23:28:15.5754713Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.5754840Z               "line": 540
2026-06-19T23:28:15.5754973Z             }
2026-06-19T23:28:15.5755082Z           ]
2026-06-19T23:28:15.5755209Z         }
2026-06-19T23:28:15.5755333Z       }
2026-06-19T23:28:15.5755462Z     },
2026-06-19T23:28:15.5755590Z     {
2026-06-19T23:28:15.5755763Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-19T23:28:15.5760803Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-19T23:28:15.5761123Z       "requiredStages": [],
2026-06-19T23:28:15.5761256Z       "stages": {
2026-06-19T23:28:15.5761375Z         "doc": {
2026-06-19T23:28:15.5761509Z           "complete": false,
2026-06-19T23:28:15.5761641Z           "evidence": []
2026-06-19T23:28:15.5761757Z         },
2026-06-19T23:28:15.5761890Z         "impl": {
2026-06-19T23:28:15.5762018Z           "complete": false,
2026-06-19T23:28:15.5762153Z           "evidence": []
2026-06-19T23:28:15.5762285Z         },
2026-06-19T23:28:15.5762411Z         "int": {
2026-06-19T23:28:15.5762542Z           "complete": false,
2026-06-19T23:28:15.5762680Z           "evidence": []
2026-06-19T23:28:15.5762799Z         },
2026-06-19T23:28:15.5762926Z         "unit": {
2026-06-19T23:28:15.5763069Z           "complete": false,
2026-06-19T23:28:15.5763212Z           "evidence": []
2026-06-19T23:28:15.5763336Z         }
2026-06-19T23:28:15.5763460Z       }
2026-06-19T23:28:15.5763584Z     },
2026-06-19T23:28:15.5763709Z     {
2026-06-19T23:28:15.5763874Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-19T23:28:15.5765481Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-19T23:28:15.5765638Z       "requiredStages": [
2026-06-19T23:28:15.5765774Z         "impl",
2026-06-19T23:28:15.5765907Z         "unit",
2026-06-19T23:28:15.5766037Z         "int"
2026-06-19T23:28:15.5766294Z       ],
2026-06-19T23:28:15.5766422Z       "stages": {
2026-06-19T23:28:15.5766547Z         "doc": {
2026-06-19T23:28:15.5766690Z           "complete": false,
2026-06-19T23:28:15.5766823Z           "evidence": []
2026-06-19T23:28:15.5766952Z         },
2026-06-19T23:28:15.5767081Z         "impl": {
2026-06-19T23:28:15.5767220Z           "complete": true,
2026-06-19T23:28:15.5767338Z           "evidence": [
2026-06-19T23:28:15.5767467Z             {
2026-06-19T23:28:15.5767638Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5767772Z               "line": 538
2026-06-19T23:28:15.5767901Z             },
2026-06-19T23:28:15.5768123Z             {
2026-06-19T23:28:15.5768294Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5768421Z               "line": 607
2026-06-19T23:28:15.5768551Z             },
2026-06-19T23:28:15.5768674Z             {
2026-06-19T23:28:15.5768876Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-19T23:28:15.5769089Z               "line": 21
2026-06-19T23:28:15.5769209Z             }
2026-06-19T23:28:15.5769337Z           ]
2026-06-19T23:28:15.5769462Z         },
2026-06-19T23:28:15.5769590Z         "int": {
2026-06-19T23:28:15.5769738Z           "complete": true,
2026-06-19T23:28:15.5769872Z           "evidence": [
2026-06-19T23:28:15.5770000Z             {
2026-06-19T23:28:15.5770191Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-19T23:28:15.5770319Z               "line": 236
2026-06-19T23:28:15.5770445Z             },
2026-06-19T23:28:15.5770572Z             {
2026-06-19T23:28:15.5770769Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-19T23:28:15.5770905Z               "line": 396
2026-06-19T23:28:15.5771034Z             },
2026-06-19T23:28:15.5771154Z             {
2026-06-19T23:28:15.5771349Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.5771478Z               "line": 1441
2026-06-19T23:28:15.5771606Z             },
2026-06-19T23:28:15.5771726Z             {
2026-06-19T23:28:15.5771920Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.5772060Z               "line": 1593
2026-06-19T23:28:15.5772178Z             }
2026-06-19T23:28:15.5772308Z           ]
2026-06-19T23:28:15.5772431Z         },
2026-06-19T23:28:15.5772559Z         "unit": {
2026-06-19T23:28:15.5772694Z           "complete": true,
2026-06-19T23:28:15.5772827Z           "evidence": [
2026-06-19T23:28:15.5772942Z             {
2026-06-19T23:28:15.5773107Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5773240Z               "line": 887
2026-06-19T23:28:15.5773368Z             }
2026-06-19T23:28:15.5773496Z           ]
2026-06-19T23:28:15.5773629Z         }
2026-06-19T23:28:15.5773753Z       }
2026-06-19T23:28:15.5773882Z     },
2026-06-19T23:28:15.5774006Z     {
2026-06-19T23:28:15.5774172Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-19T23:28:15.5774378Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-19T23:28:15.5774526Z       "requiredStages": [
2026-06-19T23:28:15.5774654Z         "impl",
2026-06-19T23:28:15.5774783Z         "unit"
2026-06-19T23:28:15.5774908Z       ],
2026-06-19T23:28:15.5775031Z       "stages": {
2026-06-19T23:28:15.5775160Z         "doc": {
2026-06-19T23:28:15.5775293Z           "complete": false,
2026-06-19T23:28:15.5775436Z           "evidence": []
2026-06-19T23:28:15.5775566Z         },
2026-06-19T23:28:15.5775694Z         "impl": {
2026-06-19T23:28:15.5775833Z           "complete": true,
2026-06-19T23:28:15.5775970Z           "evidence": [
2026-06-19T23:28:15.5776102Z             {
2026-06-19T23:28:15.5776268Z               "path": "crates/spt-live/src/echo.rs",
2026-06-19T23:28:15.5776405Z               "line": 25
2026-06-19T23:28:15.5776525Z             },
2026-06-19T23:28:15.5776649Z             {
2026-06-19T23:28:15.5776812Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.5777058Z               "line": 26
2026-06-19T23:28:15.5777197Z             },
2026-06-19T23:28:15.5777326Z             {
2026-06-19T23:28:15.5777488Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.5777617Z               "line": 159
2026-06-19T23:28:15.5777741Z             }
2026-06-19T23:28:15.5777869Z           ]
2026-06-19T23:28:15.5777984Z         },
2026-06-19T23:28:15.5778114Z         "int": {
2026-06-19T23:28:15.5778250Z           "complete": false,
2026-06-19T23:28:15.5778395Z           "evidence": []
2026-06-19T23:28:15.5778518Z         },
2026-06-19T23:28:15.5778636Z         "unit": {
2026-06-19T23:28:15.5778779Z           "complete": true,
2026-06-19T23:28:15.5779092Z           "evidence": [
2026-06-19T23:28:15.5779221Z             {
2026-06-19T23:28:15.5779374Z               "path": "crates/spt-live/src/echo.rs",
2026-06-19T23:28:15.5779516Z               "line": 188
2026-06-19T23:28:15.5779645Z             },
2026-06-19T23:28:15.5779774Z             {
2026-06-19T23:28:15.5779945Z               "path": "crates/spt-live/src/echo.rs",
2026-06-19T23:28:15.5780069Z               "line": 240
2026-06-19T23:28:15.5780198Z             },
2026-06-19T23:28:15.5780323Z             {
2026-06-19T23:28:15.5780489Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.5780618Z               "line": 186
2026-06-19T23:28:15.5780727Z             }
2026-06-19T23:28:15.5780851Z           ]
2026-06-19T23:28:15.5780976Z         }
2026-06-19T23:28:15.5781094Z       }
2026-06-19T23:28:15.5781214Z     },
2026-06-19T23:28:15.5781343Z     {
2026-06-19T23:28:15.5781503Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-19T23:28:15.5781719Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-19T23:28:15.5781861Z       "requiredStages": [
2026-06-19T23:28:15.5781991Z         "impl",
2026-06-19T23:28:15.5782113Z         "unit"
2026-06-19T23:28:15.5782238Z       ],
2026-06-19T23:28:15.5782367Z       "stages": {
2026-06-19T23:28:15.5782500Z         "doc": {
2026-06-19T23:28:15.5782639Z           "complete": false,
2026-06-19T23:28:15.5782766Z           "evidence": []
2026-06-19T23:28:15.5782887Z         },
2026-06-19T23:28:15.5783019Z         "impl": {
2026-06-19T23:28:15.5783148Z           "complete": true,
2026-06-19T23:28:15.5783283Z           "evidence": [
2026-06-19T23:28:15.5783406Z             {
2026-06-19T23:28:15.5783579Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5783720Z               "line": 48
2026-06-19T23:28:15.5783843Z             },
2026-06-19T23:28:15.5783966Z             {
2026-06-19T23:28:15.5784117Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5784267Z               "line": 55
2026-06-19T23:28:15.5784404Z             },
2026-06-19T23:28:15.5784524Z             {
2026-06-19T23:28:15.5784694Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5784820Z               "line": 74
2026-06-19T23:28:15.5784957Z             },
2026-06-19T23:28:15.5785081Z             {
2026-06-19T23:28:15.5785253Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5785386Z               "line": 91
2026-06-19T23:28:15.5785511Z             }
2026-06-19T23:28:15.5785638Z           ]
2026-06-19T23:28:15.5785754Z         },
2026-06-19T23:28:15.5785886Z         "int": {
2026-06-19T23:28:15.5786020Z           "complete": false,
2026-06-19T23:28:15.5786164Z           "evidence": []
2026-06-19T23:28:15.5786292Z         },
2026-06-19T23:28:15.5786422Z         "unit": {
2026-06-19T23:28:15.5786572Z           "complete": true,
2026-06-19T23:28:15.5786706Z           "evidence": [
2026-06-19T23:28:15.5786838Z             {
2026-06-19T23:28:15.5787004Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5787143Z               "line": 149
2026-06-19T23:28:15.5787275Z             },
2026-06-19T23:28:15.5787400Z             {
2026-06-19T23:28:15.5787561Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5787810Z               "line": 166
2026-06-19T23:28:15.5787933Z             },
2026-06-19T23:28:15.5788063Z             {
2026-06-19T23:28:15.5791297Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5791474Z               "line": 176
2026-06-19T23:28:15.5791607Z             },
2026-06-19T23:28:15.5791731Z             {
2026-06-19T23:28:15.5791903Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5792039Z               "line": 194
2026-06-19T23:28:15.5792149Z             },
2026-06-19T23:28:15.5792279Z             {
2026-06-19T23:28:15.5792454Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.5792730Z               "line": 207
2026-06-19T23:28:15.5792865Z             }
2026-06-19T23:28:15.5792988Z           ]
2026-06-19T23:28:15.5793103Z         }
2026-06-19T23:28:15.5793227Z       }
2026-06-19T23:28:15.5793345Z     },
2026-06-19T23:28:15.5793461Z     {
2026-06-19T23:28:15.5793628Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-19T23:28:15.5793871Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-19T23:28:15.5794004Z       "requiredStages": [
2026-06-19T23:28:15.5794134Z         "impl",
2026-06-19T23:28:15.5794265Z         "unit"
2026-06-19T23:28:15.5794385Z       ],
2026-06-19T23:28:15.5794512Z       "stages": {
2026-06-19T23:28:15.5794625Z         "doc": {
2026-06-19T23:28:15.5794754Z           "complete": false,
2026-06-19T23:28:15.5794888Z           "evidence": []
2026-06-19T23:28:15.5795016Z         },
2026-06-19T23:28:15.5795140Z         "impl": {
2026-06-19T23:28:15.5795278Z           "complete": true,
2026-06-19T23:28:15.5795413Z           "evidence": [
2026-06-19T23:28:15.5795541Z             {
2026-06-19T23:28:15.5795728Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5795851Z               "line": 466
2026-06-19T23:28:15.5795975Z             },
2026-06-19T23:28:15.5796103Z             {
2026-06-19T23:28:15.5796275Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.5796418Z               "line": 26
2026-06-19T23:28:15.5796542Z             }
2026-06-19T23:28:15.5796672Z           ]
2026-06-19T23:28:15.5796785Z         },
2026-06-19T23:28:15.5796915Z         "int": {
2026-06-19T23:28:15.5797053Z           "complete": false,
2026-06-19T23:28:15.5797180Z           "evidence": []
2026-06-19T23:28:15.5797304Z         },
2026-06-19T23:28:15.5797430Z         "unit": {
2026-06-19T23:28:15.5797559Z           "complete": true,
2026-06-19T23:28:15.5797693Z           "evidence": [
2026-06-19T23:28:15.5797821Z             {
2026-06-19T23:28:15.5797984Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.5798121Z               "line": 150
2026-06-19T23:28:15.5798242Z             },
2026-06-19T23:28:15.5798366Z             {
2026-06-19T23:28:15.5798532Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.5798660Z               "line": 208
2026-06-19T23:28:15.5798780Z             }
2026-06-19T23:28:15.5798910Z           ]
2026-06-19T23:28:15.5799123Z         }
2026-06-19T23:28:15.5799286Z       }
2026-06-19T23:28:15.5799409Z     },
2026-06-19T23:28:15.5799535Z     {
2026-06-19T23:28:15.5799704Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-19T23:28:15.5809044Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-19T23:28:15.5809559Z       "requiredStages": [
2026-06-19T23:28:15.5809688Z         "impl",
2026-06-19T23:28:15.5809813Z         "unit",
2026-06-19T23:28:15.5809941Z         "int"
2026-06-19T23:28:15.5810066Z       ],
2026-06-19T23:28:15.5810198Z       "stages": {
2026-06-19T23:28:15.5810325Z         "doc": {
2026-06-19T23:28:15.5810469Z           "complete": false,
2026-06-19T23:28:15.5810605Z           "evidence": []
2026-06-19T23:28:15.5810724Z         },
2026-06-19T23:28:15.5810853Z         "impl": {
2026-06-19T23:28:15.5810991Z           "complete": true,
2026-06-19T23:28:15.5811125Z           "evidence": [
2026-06-19T23:28:15.5811248Z             {
2026-06-19T23:28:15.5811425Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.5811553Z               "line": 99
2026-06-19T23:28:15.5811679Z             },
2026-06-19T23:28:15.5811802Z             {
2026-06-19T23:28:15.5811979Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.5812121Z               "line": 201
2026-06-19T23:28:15.5812245Z             }
2026-06-19T23:28:15.5812370Z           ]
2026-06-19T23:28:15.5812493Z         },
2026-06-19T23:28:15.5812628Z         "int": {
2026-06-19T23:28:15.5812760Z           "complete": true,
2026-06-19T23:28:15.5812894Z           "evidence": [
2026-06-19T23:28:15.5813019Z             {
2026-06-19T23:28:15.5813221Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.5813351Z               "line": 682
2026-06-19T23:28:15.5813474Z             }
2026-06-19T23:28:15.5813599Z           ]
2026-06-19T23:28:15.5813723Z         },
2026-06-19T23:28:15.5813850Z         "unit": {
2026-06-19T23:28:15.5814080Z           "complete": true,
2026-06-19T23:28:15.5814209Z           "evidence": [
2026-06-19T23:28:15.5814333Z             {
2026-06-19T23:28:15.5814499Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.5814624Z               "line": 517
2026-06-19T23:28:15.5814748Z             },
2026-06-19T23:28:15.5814878Z             {
2026-06-19T23:28:15.5815047Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.5815177Z               "line": 576
2026-06-19T23:28:15.5815297Z             }
2026-06-19T23:28:15.5815409Z           ]
2026-06-19T23:28:15.5815534Z         }
2026-06-19T23:28:15.5815656Z       }
2026-06-19T23:28:15.5815851Z     },
2026-06-19T23:28:15.5815979Z     {
2026-06-19T23:28:15.5816151Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-19T23:28:15.5817548Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-19T23:28:15.5817701Z       "requiredStages": [
2026-06-19T23:28:15.5817826Z         "doc",
2026-06-19T23:28:15.5817954Z         "impl",
2026-06-19T23:28:15.5818079Z         "unit"
2026-06-19T23:28:15.5818206Z       ],
2026-06-19T23:28:15.5818334Z       "stages": {
2026-06-19T23:28:15.5818458Z         "doc": {
2026-06-19T23:28:15.5818598Z           "complete": true,
2026-06-19T23:28:15.5818723Z           "evidence": [
2026-06-19T23:28:15.5818857Z             {
2026-06-19T23:28:15.5819095Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5819251Z               "line": 214
2026-06-19T23:28:15.5819376Z             }
2026-06-19T23:28:15.5819515Z           ]
2026-06-19T23:28:15.5819633Z         },
2026-06-19T23:28:15.5819758Z         "impl": {
2026-06-19T23:28:15.5819895Z           "complete": true,
2026-06-19T23:28:15.5820025Z           "evidence": [
2026-06-19T23:28:15.5820152Z             {
2026-06-19T23:28:15.5820325Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5820453Z               "line": 56
2026-06-19T23:28:15.5820582Z             },
2026-06-19T23:28:15.5820707Z             {
2026-06-19T23:28:15.5820876Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.5821005Z               "line": 580
2026-06-19T23:28:15.5821132Z             },
2026-06-19T23:28:15.5821256Z             {
2026-06-19T23:28:15.5821437Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5821580Z               "line": 36
2026-06-19T23:28:15.5821695Z             },
2026-06-19T23:28:15.5821823Z             {
2026-06-19T23:28:15.5821986Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5822118Z               "line": 59
2026-06-19T23:28:15.5822239Z             },
2026-06-19T23:28:15.5822371Z             {
2026-06-19T23:28:15.5822539Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5822667Z               "line": 83
2026-06-19T23:28:15.5822786Z             },
2026-06-19T23:28:15.5822907Z             {
2026-06-19T23:28:15.5823077Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5823207Z               "line": 140
2026-06-19T23:28:15.5823339Z             },
2026-06-19T23:28:15.5823459Z             {
2026-06-19T23:28:15.5823621Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5823753Z               "line": 159
2026-06-19T23:28:15.5823873Z             },
2026-06-19T23:28:15.5824001Z             {
2026-06-19T23:28:15.5824168Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5824297Z               "line": 384
2026-06-19T23:28:15.5824420Z             },
2026-06-19T23:28:15.5824541Z             {
2026-06-19T23:28:15.5824712Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5824950Z               "line": 535
2026-06-19T23:28:15.5825079Z             },
2026-06-19T23:28:15.5825194Z             {
2026-06-19T23:28:15.5825365Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5825508Z               "line": 581
2026-06-19T23:28:15.5825627Z             },
2026-06-19T23:28:15.5825757Z             {
2026-06-19T23:28:15.5825923Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.5826060Z               "line": 300
2026-06-19T23:28:15.5826192Z             },
2026-06-19T23:28:15.5826315Z             {
2026-06-19T23:28:15.5826474Z               "path": "crates/spt/src/main.rs",
2026-06-19T23:28:15.5826706Z               "line": 42
2026-06-19T23:28:15.5826840Z             }
2026-06-19T23:28:15.5826963Z           ]
2026-06-19T23:28:15.5827093Z         },
2026-06-19T23:28:15.5827216Z         "int": {
2026-06-19T23:28:15.5827341Z           "complete": false,
2026-06-19T23:28:15.5827474Z           "evidence": []
2026-06-19T23:28:15.5827588Z         },
2026-06-19T23:28:15.5827713Z         "unit": {
2026-06-19T23:28:15.5827846Z           "complete": true,
2026-06-19T23:28:15.5827980Z           "evidence": [
2026-06-19T23:28:15.5828103Z             {
2026-06-19T23:28:15.5828290Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5828418Z               "line": 813
2026-06-19T23:28:15.5828542Z             },
2026-06-19T23:28:15.5828658Z             {
2026-06-19T23:28:15.5828832Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5829013Z               "line": 854
2026-06-19T23:28:15.5829130Z             },
2026-06-19T23:28:15.5829254Z             {
2026-06-19T23:28:15.5829435Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.5829563Z               "line": 928
2026-06-19T23:28:15.5829693Z             }
2026-06-19T23:28:15.5829811Z           ]
2026-06-19T23:28:15.5829927Z         }
2026-06-19T23:28:15.5830051Z       }
2026-06-19T23:28:15.5830169Z     },
2026-06-19T23:28:15.5830294Z     {
2026-06-19T23:28:15.5830469Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-19T23:28:15.5835477Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-19T23:28:15.5835678Z       "requiredStages": [
2026-06-19T23:28:15.5835811Z         "impl",
2026-06-19T23:28:15.5835930Z         "unit",
2026-06-19T23:28:15.5836182Z         "int"
2026-06-19T23:28:15.5836346Z       ],
2026-06-19T23:28:15.5836483Z       "stages": {
2026-06-19T23:28:15.5836611Z         "doc": {
2026-06-19T23:28:15.5836748Z           "complete": false,
2026-06-19T23:28:15.5836879Z           "evidence": []
2026-06-19T23:28:15.5837000Z         },
2026-06-19T23:28:15.5837128Z         "impl": {
2026-06-19T23:28:15.5837261Z           "complete": true,
2026-06-19T23:28:15.5837386Z           "evidence": [
2026-06-19T23:28:15.5837514Z             {
2026-06-19T23:28:15.5837686Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-19T23:28:15.5837815Z               "line": 106
2026-06-19T23:28:15.5838044Z             }
2026-06-19T23:28:15.5838167Z           ]
2026-06-19T23:28:15.5838292Z         },
2026-06-19T23:28:15.5838425Z         "int": {
2026-06-19T23:28:15.5838560Z           "complete": true,
2026-06-19T23:28:15.5838683Z           "evidence": [
2026-06-19T23:28:15.5838806Z             {
2026-06-19T23:28:15.5839079Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-19T23:28:15.5839214Z               "line": 296
2026-06-19T23:28:15.5839340Z             }
2026-06-19T23:28:15.5839463Z           ]
2026-06-19T23:28:15.5839587Z         },
2026-06-19T23:28:15.5839714Z         "unit": {
2026-06-19T23:28:15.5839843Z           "complete": true,
2026-06-19T23:28:15.5839977Z           "evidence": [
2026-06-19T23:28:15.5840095Z             {
2026-06-19T23:28:15.5840267Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.5840400Z               "line": 464
2026-06-19T23:28:15.5840525Z             }
2026-06-19T23:28:15.5840639Z           ]
2026-06-19T23:28:15.5840772Z         }
2026-06-19T23:28:15.5840892Z       }
2026-06-19T23:28:15.5841011Z     },
2026-06-19T23:28:15.5841127Z     {
2026-06-19T23:28:15.5841282Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-19T23:28:15.5844732Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-19T23:28:15.5844926Z       "requiredStages": [
2026-06-19T23:28:15.5845051Z         "impl",
2026-06-19T23:28:15.5845174Z         "unit",
2026-06-19T23:28:15.5845298Z         "int"
2026-06-19T23:28:15.5845418Z       ],
2026-06-19T23:28:15.5845555Z       "stages": {
2026-06-19T23:28:15.5845680Z         "doc": {
2026-06-19T23:28:15.5845827Z           "complete": false,
2026-06-19T23:28:15.5845957Z           "evidence": []
2026-06-19T23:28:15.5846076Z         },
2026-06-19T23:28:15.5846204Z         "impl": {
2026-06-19T23:28:15.5846342Z           "complete": true,
2026-06-19T23:28:15.5846476Z           "evidence": [
2026-06-19T23:28:15.5846606Z             {
2026-06-19T23:28:15.5846795Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.5846921Z               "line": 102
2026-06-19T23:28:15.5847047Z             },
2026-06-19T23:28:15.5847176Z             {
2026-06-19T23:28:15.5847336Z               "path": "crates/spt-term/src/pty.rs",
2026-06-19T23:28:15.5847574Z               "line": 134
2026-06-19T23:28:15.5847698Z             }
2026-06-19T23:28:15.5847826Z           ]
2026-06-19T23:28:15.5847951Z         },
2026-06-19T23:28:15.5848079Z         "int": {
2026-06-19T23:28:15.5848213Z           "complete": true,
2026-06-19T23:28:15.5848336Z           "evidence": [
2026-06-19T23:28:15.5848466Z             {
2026-06-19T23:28:15.5848637Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-19T23:28:15.5848766Z               "line": 311
2026-06-19T23:28:15.5848885Z             },
2026-06-19T23:28:15.5849091Z             {
2026-06-19T23:28:15.5849266Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-19T23:28:15.5849501Z               "line": 507
2026-06-19T23:28:15.5849629Z             }
2026-06-19T23:28:15.5849754Z           ]
2026-06-19T23:28:15.5849881Z         },
2026-06-19T23:28:15.5850004Z         "unit": {
2026-06-19T23:28:15.5850138Z           "complete": true,
2026-06-19T23:28:15.5850255Z           "evidence": [
2026-06-19T23:28:15.5850388Z             {
2026-06-19T23:28:15.5850565Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.5850689Z               "line": 223
2026-06-19T23:28:15.5850818Z             }
2026-06-19T23:28:15.5850937Z           ]
2026-06-19T23:28:15.5851062Z         }
2026-06-19T23:28:15.5851185Z       }
2026-06-19T23:28:15.5851314Z     },
2026-06-19T23:28:15.5851443Z     {
2026-06-19T23:28:15.5851604Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-19T23:28:15.5853404Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-19T23:28:15.5853580Z       "requiredStages": [
2026-06-19T23:28:15.5853704Z         "impl",
2026-06-19T23:28:15.5853832Z         "unit"
2026-06-19T23:28:15.5853952Z       ],
2026-06-19T23:28:15.5854081Z       "stages": {
2026-06-19T23:28:15.5854204Z         "doc": {
2026-06-19T23:28:15.5854343Z           "complete": false,
2026-06-19T23:28:15.5854476Z           "evidence": []
2026-06-19T23:28:15.5854596Z         },
2026-06-19T23:28:15.5854729Z         "impl": {
2026-06-19T23:28:15.5854859Z           "complete": true,
2026-06-19T23:28:15.5854987Z           "evidence": [
2026-06-19T23:28:15.5855115Z             {
2026-06-19T23:28:15.5855292Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5855419Z               "line": 31
2026-06-19T23:28:15.5855543Z             }
2026-06-19T23:28:15.5855668Z           ]
2026-06-19T23:28:15.5855791Z         },
2026-06-19T23:28:15.5855925Z         "int": {
2026-06-19T23:28:15.5856063Z           "complete": false,
2026-06-19T23:28:15.5856202Z           "evidence": []
2026-06-19T23:28:15.5856335Z         },
2026-06-19T23:28:15.5856449Z         "unit": {
2026-06-19T23:28:15.5856588Z           "complete": true,
2026-06-19T23:28:15.5856711Z           "evidence": [
2026-06-19T23:28:15.5856837Z             {
2026-06-19T23:28:15.5857012Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5857147Z               "line": 181
2026-06-19T23:28:15.5857274Z             }
2026-06-19T23:28:15.5857398Z           ]
2026-06-19T23:28:15.5857528Z         }
2026-06-19T23:28:15.5857641Z       }
2026-06-19T23:28:15.5857779Z     },
2026-06-19T23:28:15.5857896Z     {
2026-06-19T23:28:15.5858067Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-19T23:28:15.5858281Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-19T23:28:15.5858411Z       "requiredStages": [
2026-06-19T23:28:15.5858540Z         "impl",
2026-06-19T23:28:15.5858774Z         "unit"
2026-06-19T23:28:15.5858901Z       ],
2026-06-19T23:28:15.5859098Z       "stages": {
2026-06-19T23:28:15.5859235Z         "doc": {
2026-06-19T23:28:15.5859399Z           "complete": false,
2026-06-19T23:28:15.5859531Z           "evidence": []
2026-06-19T23:28:15.5859656Z         },
2026-06-19T23:28:15.5859783Z         "impl": {
2026-06-19T23:28:15.5859917Z           "complete": true,
2026-06-19T23:28:15.5860052Z           "evidence": [
2026-06-19T23:28:15.5860170Z             {
2026-06-19T23:28:15.5860362Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5860484Z               "line": 49
2026-06-19T23:28:15.5860717Z             },
2026-06-19T23:28:15.5860848Z             {
2026-06-19T23:28:15.5861030Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5861158Z               "line": 81
2026-06-19T23:28:15.5861288Z             }
2026-06-19T23:28:15.5861416Z           ]
2026-06-19T23:28:15.5861539Z         },
2026-06-19T23:28:15.5861669Z         "int": {
2026-06-19T23:28:15.5861802Z           "complete": false,
2026-06-19T23:28:15.5861932Z           "evidence": []
2026-06-19T23:28:15.5862055Z         },
2026-06-19T23:28:15.5862183Z         "unit": {
2026-06-19T23:28:15.5862313Z           "complete": true,
2026-06-19T23:28:15.5862441Z           "evidence": [
2026-06-19T23:28:15.5862566Z             {
2026-06-19T23:28:15.5862741Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5862871Z               "line": 156
2026-06-19T23:28:15.5862999Z             },
2026-06-19T23:28:15.5863126Z             {
2026-06-19T23:28:15.5863293Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5863424Z               "line": 173
2026-06-19T23:28:15.5863554Z             },
2026-06-19T23:28:15.5863668Z             {
2026-06-19T23:28:15.5863840Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5863969Z               "line": 196
2026-06-19T23:28:15.5864106Z             }
2026-06-19T23:28:15.5864231Z           ]
2026-06-19T23:28:15.5864345Z         }
2026-06-19T23:28:15.5864470Z       }
2026-06-19T23:28:15.5864588Z     },
2026-06-19T23:28:15.5864716Z     {
2026-06-19T23:28:15.5864884Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-19T23:28:15.5865109Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-19T23:28:15.5865251Z       "requiredStages": [
2026-06-19T23:28:15.5865380Z         "impl",
2026-06-19T23:28:15.5865509Z         "unit"
2026-06-19T23:28:15.5865638Z       ],
2026-06-19T23:28:15.5865767Z       "stages": {
2026-06-19T23:28:15.5865890Z         "doc": {
2026-06-19T23:28:15.5866036Z           "complete": false,
2026-06-19T23:28:15.5866171Z           "evidence": []
2026-06-19T23:28:15.5866294Z         },
2026-06-19T23:28:15.5866428Z         "impl": {
2026-06-19T23:28:15.5866562Z           "complete": true,
2026-06-19T23:28:15.5866690Z           "evidence": [
2026-06-19T23:28:15.5866819Z             {
2026-06-19T23:28:15.5867005Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5867134Z               "line": 120
2026-06-19T23:28:15.5867257Z             }
2026-06-19T23:28:15.5867387Z           ]
2026-06-19T23:28:15.5867510Z         },
2026-06-19T23:28:15.5867644Z         "int": {
2026-06-19T23:28:15.5867782Z           "complete": false,
2026-06-19T23:28:15.5867920Z           "evidence": []
2026-06-19T23:28:15.5868050Z         },
2026-06-19T23:28:15.5868177Z         "unit": {
2026-06-19T23:28:15.5868310Z           "complete": true,
2026-06-19T23:28:15.5868438Z           "evidence": [
2026-06-19T23:28:15.5868570Z             {
2026-06-19T23:28:15.5868743Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5868885Z               "line": 212
2026-06-19T23:28:15.5869100Z             },
2026-06-19T23:28:15.5869218Z             {
2026-06-19T23:28:15.5869390Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5869519Z               "line": 221
2026-06-19T23:28:15.5869767Z             },
2026-06-19T23:28:15.5869896Z             {
2026-06-19T23:28:15.5870068Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5870206Z               "line": 229
2026-06-19T23:28:15.5870325Z             },
2026-06-19T23:28:15.5870448Z             {
2026-06-19T23:28:15.5870612Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5870749Z               "line": 239
2026-06-19T23:28:15.5870874Z             },
2026-06-19T23:28:15.5871001Z             {
2026-06-19T23:28:15.5871168Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-19T23:28:15.5871300Z               "line": 249
2026-06-19T23:28:15.5871523Z             }
2026-06-19T23:28:15.5871652Z           ]
2026-06-19T23:28:15.5871780Z         }
2026-06-19T23:28:15.5871900Z       }
2026-06-19T23:28:15.5872023Z     },
2026-06-19T23:28:15.5872148Z     {
2026-06-19T23:28:15.5872305Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-19T23:28:15.5872525Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-19T23:28:15.5872662Z       "requiredStages": [
2026-06-19T23:28:15.5872792Z         "impl",
2026-06-19T23:28:15.5872915Z         "unit"
2026-06-19T23:28:15.5873044Z       ],
2026-06-19T23:28:15.5873174Z       "stages": {
2026-06-19T23:28:15.5873301Z         "doc": {
2026-06-19T23:28:15.5873441Z           "complete": false,
2026-06-19T23:28:15.5873578Z           "evidence": []
2026-06-19T23:28:15.5873705Z         },
2026-06-19T23:28:15.5873829Z         "impl": {
2026-06-19T23:28:15.5873975Z           "complete": true,
2026-06-19T23:28:15.5874100Z           "evidence": [
2026-06-19T23:28:15.5874233Z             {
2026-06-19T23:28:15.5874400Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.5874529Z               "line": 14
2026-06-19T23:28:15.5874657Z             },
2026-06-19T23:28:15.5874777Z             {
2026-06-19T23:28:15.5874948Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.5875092Z               "line": 63
2026-06-19T23:28:15.5875206Z             }
2026-06-19T23:28:15.5875330Z           ]
2026-06-19T23:28:15.5875454Z         },
2026-06-19T23:28:15.5875582Z         "int": {
2026-06-19T23:28:15.5875721Z           "complete": false,
2026-06-19T23:28:15.5875859Z           "evidence": []
2026-06-19T23:28:15.5875994Z         },
2026-06-19T23:28:15.5876125Z         "unit": {
2026-06-19T23:28:15.5876265Z           "complete": true,
2026-06-19T23:28:15.5876398Z           "evidence": [
2026-06-19T23:28:15.5876530Z             {
2026-06-19T23:28:15.5876693Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.5876830Z               "line": 164
2026-06-19T23:28:15.5876969Z             },
2026-06-19T23:28:15.5877094Z             {
2026-06-19T23:28:15.5877255Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.5877389Z               "line": 198
2026-06-19T23:28:15.5877521Z             },
2026-06-19T23:28:15.5877647Z             {
2026-06-19T23:28:15.5877817Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.5877957Z               "line": 220
2026-06-19T23:28:15.5878085Z             }
2026-06-19T23:28:15.5878209Z           ]
2026-06-19T23:28:15.5878338Z         }
2026-06-19T23:28:15.5878465Z       }
2026-06-19T23:28:15.5878591Z     },
2026-06-19T23:28:15.5878713Z     {
2026-06-19T23:28:15.5878866Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-19T23:28:15.5880360Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-19T23:28:15.5880504Z       "requiredStages": [],
2026-06-19T23:28:15.5880628Z       "stages": {
2026-06-19T23:28:15.5880872Z         "doc": {
2026-06-19T23:28:15.5880999Z           "complete": true,
2026-06-19T23:28:15.5881124Z           "evidence": [
2026-06-19T23:28:15.5881242Z             {
2026-06-19T23:28:15.5881396Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5881543Z               "line": 165
2026-06-19T23:28:15.5881671Z             }
2026-06-19T23:28:15.5881790Z           ]
2026-06-19T23:28:15.5881911Z         },
2026-06-19T23:28:15.5882040Z         "impl": {
2026-06-19T23:28:15.5882184Z           "complete": false,
2026-06-19T23:28:15.5882302Z           "evidence": []
2026-06-19T23:28:15.5882432Z         },
2026-06-19T23:28:15.5882560Z         "int": {
2026-06-19T23:28:15.5882798Z           "complete": false,
2026-06-19T23:28:15.5882931Z           "evidence": []
2026-06-19T23:28:15.5883052Z         },
2026-06-19T23:28:15.5883185Z         "unit": {
2026-06-19T23:28:15.5883318Z           "complete": false,
2026-06-19T23:28:15.5883452Z           "evidence": []
2026-06-19T23:28:15.5883580Z         }
2026-06-19T23:28:15.5883706Z       }
2026-06-19T23:28:15.5883833Z     },
2026-06-19T23:28:15.5883953Z     {
2026-06-19T23:28:15.5884128Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-19T23:28:15.5884394Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-19T23:28:15.5884540Z       "requiredStages": [
2026-06-19T23:28:15.5884669Z         "impl",
2026-06-19T23:28:15.5884793Z         "unit"
2026-06-19T23:28:15.5884922Z       ],
2026-06-19T23:28:15.5885046Z       "stages": {
2026-06-19T23:28:15.5885174Z         "doc": {
2026-06-19T23:28:15.5885309Z           "complete": false,
2026-06-19T23:28:15.5885442Z           "evidence": []
2026-06-19T23:28:15.5885575Z         },
2026-06-19T23:28:15.5885704Z         "impl": {
2026-06-19T23:28:15.5885837Z           "complete": true,
2026-06-19T23:28:15.5885962Z           "evidence": [
2026-06-19T23:28:15.5886095Z             {
2026-06-19T23:28:15.5886268Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5886404Z               "line": 76
2026-06-19T23:28:15.5886534Z             },
2026-06-19T23:28:15.5886662Z             {
2026-06-19T23:28:15.5886830Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5886958Z               "line": 167
2026-06-19T23:28:15.5887085Z             },
2026-06-19T23:28:15.5887210Z             {
2026-06-19T23:28:15.5887377Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5887515Z               "line": 233
2026-06-19T23:28:15.5887634Z             },
2026-06-19T23:28:15.5887762Z             {
2026-06-19T23:28:15.5887920Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5888067Z               "line": 272
2026-06-19T23:28:15.5888192Z             }
2026-06-19T23:28:15.5888321Z           ]
2026-06-19T23:28:15.5888445Z         },
2026-06-19T23:28:15.5888574Z         "int": {
2026-06-19T23:28:15.5888720Z           "complete": false,
2026-06-19T23:28:15.5888846Z           "evidence": []
2026-06-19T23:28:15.5889065Z         },
2026-06-19T23:28:15.5889189Z         "unit": {
2026-06-19T23:28:15.5889330Z           "complete": true,
2026-06-19T23:28:15.5889459Z           "evidence": [
2026-06-19T23:28:15.5889577Z             {
2026-06-19T23:28:15.5889743Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5889878Z               "line": 321
2026-06-19T23:28:15.5890005Z             },
2026-06-19T23:28:15.5890125Z             {
2026-06-19T23:28:15.5890300Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5890464Z               "line": 329
2026-06-19T23:28:15.5890596Z             },
2026-06-19T23:28:15.5890745Z             {
2026-06-19T23:28:15.5890911Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5891045Z               "line": 356
2026-06-19T23:28:15.5891168Z             },
2026-06-19T23:28:15.5891292Z             {
2026-06-19T23:28:15.5891460Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5891592Z               "line": 395
2026-06-19T23:28:15.5891830Z             },
2026-06-19T23:28:15.5891951Z             {
2026-06-19T23:28:15.5892118Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5892245Z               "line": 406
2026-06-19T23:28:15.5892374Z             },
2026-06-19T23:28:15.5892500Z             {
2026-06-19T23:28:15.5892672Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5892801Z               "line": 418
2026-06-19T23:28:15.5892924Z             },
2026-06-19T23:28:15.5893053Z             {
2026-06-19T23:28:15.5893210Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-19T23:28:15.5893340Z               "line": 442
2026-06-19T23:28:15.5893583Z             }
2026-06-19T23:28:15.5893706Z           ]
2026-06-19T23:28:15.5893835Z         }
2026-06-19T23:28:15.5893956Z       }
2026-06-19T23:28:15.5894083Z     },
2026-06-19T23:28:15.5894198Z     {
2026-06-19T23:28:15.5894359Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-19T23:28:15.5894571Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-19T23:28:15.5894707Z       "requiredStages": [
2026-06-19T23:28:15.5894840Z         "impl",
2026-06-19T23:28:15.5894968Z         "int"
2026-06-19T23:28:15.5895095Z       ],
2026-06-19T23:28:15.5895215Z       "stages": {
2026-06-19T23:28:15.5895348Z         "doc": {
2026-06-19T23:28:15.5895487Z           "complete": false,
2026-06-19T23:28:15.5895616Z           "evidence": []
2026-06-19T23:28:15.5895749Z         },
2026-06-19T23:28:15.5895874Z         "impl": {
2026-06-19T23:28:15.5896011Z           "complete": true,
2026-06-19T23:28:15.5896140Z           "evidence": [
2026-06-19T23:28:15.5896273Z             {
2026-06-19T23:28:15.5896455Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.5896579Z               "line": 22
2026-06-19T23:28:15.5896712Z             }
2026-06-19T23:28:15.5896828Z           ]
2026-06-19T23:28:15.5896950Z         },
2026-06-19T23:28:15.5897075Z         "int": {
2026-06-19T23:28:15.5897227Z           "complete": true,
2026-06-19T23:28:15.5897356Z           "evidence": [
2026-06-19T23:28:15.5897477Z             {
2026-06-19T23:28:15.5897655Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-19T23:28:15.5897784Z               "line": 18
2026-06-19T23:28:15.5897908Z             }
2026-06-19T23:28:15.5898032Z           ]
2026-06-19T23:28:15.5898157Z         },
2026-06-19T23:28:15.5898289Z         "unit": {
2026-06-19T23:28:15.5898419Z           "complete": false,
2026-06-19T23:28:15.5898552Z           "evidence": []
2026-06-19T23:28:15.5898676Z         }
2026-06-19T23:28:15.5898805Z       }
2026-06-19T23:28:15.5898928Z     },
2026-06-19T23:28:15.5899148Z     {
2026-06-19T23:28:15.5899320Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-19T23:28:15.5899558Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-19T23:28:15.5899702Z       "requiredStages": [
2026-06-19T23:28:15.5899820Z         "impl",
2026-06-19T23:28:15.5899938Z         "unit"
2026-06-19T23:28:15.5900071Z       ],
2026-06-19T23:28:15.5900198Z       "stages": {
2026-06-19T23:28:15.5900327Z         "doc": {
2026-06-19T23:28:15.5900465Z           "complete": false,
2026-06-19T23:28:15.5900594Z           "evidence": []
2026-06-19T23:28:15.5900719Z         },
2026-06-19T23:28:15.5900846Z         "impl": {
2026-06-19T23:28:15.5900985Z           "complete": true,
2026-06-19T23:28:15.5901123Z           "evidence": [
2026-06-19T23:28:15.5901252Z             {
2026-06-19T23:28:15.5901424Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5901557Z               "line": 465
2026-06-19T23:28:15.5901686Z             },
2026-06-19T23:28:15.5901814Z             {
2026-06-19T23:28:15.5901987Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.5902124Z               "line": 27
2026-06-19T23:28:15.5902259Z             }
2026-06-19T23:28:15.5902382Z           ]
2026-06-19T23:28:15.5902511Z         },
2026-06-19T23:28:15.5902636Z         "int": {
2026-06-19T23:28:15.5902891Z           "complete": false,
2026-06-19T23:28:15.5903023Z           "evidence": []
2026-06-19T23:28:15.5903150Z         },
2026-06-19T23:28:15.5903285Z         "unit": {
2026-06-19T23:28:15.5903408Z           "complete": true,
2026-06-19T23:28:15.5906691Z           "evidence": [
2026-06-19T23:28:15.5906843Z             {
2026-06-19T23:28:15.5907034Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.5907167Z               "line": 990
2026-06-19T23:28:15.5907300Z             },
2026-06-19T23:28:15.5907426Z             {
2026-06-19T23:28:15.5907601Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.5907878Z               "line": 181
2026-06-19T23:28:15.5908003Z             }
2026-06-19T23:28:15.5908125Z           ]
2026-06-19T23:28:15.5908248Z         }
2026-06-19T23:28:15.5908368Z       }
2026-06-19T23:28:15.5908497Z     },
2026-06-19T23:28:15.5908611Z     {
2026-06-19T23:28:15.5908783Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-19T23:28:15.5909093Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-19T23:28:15.5909226Z       "requiredStages": [
2026-06-19T23:28:15.5909355Z         "impl",
2026-06-19T23:28:15.5909507Z         "unit"
2026-06-19T23:28:15.5909633Z       ],
2026-06-19T23:28:15.5909755Z       "stages": {
2026-06-19T23:28:15.5909875Z         "doc": {
2026-06-19T23:28:15.5910009Z           "complete": false,
2026-06-19T23:28:15.5910146Z           "evidence": []
2026-06-19T23:28:15.5910267Z         },
2026-06-19T23:28:15.5910399Z         "impl": {
2026-06-19T23:28:15.5910550Z           "complete": true,
2026-06-19T23:28:15.5910678Z           "evidence": [
2026-06-19T23:28:15.5910810Z             {
2026-06-19T23:28:15.5910993Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5911129Z               "line": 73
2026-06-19T23:28:15.5911245Z             },
2026-06-19T23:28:15.5911378Z             {
2026-06-19T23:28:15.5911545Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5911678Z               "line": 972
2026-06-19T23:28:15.5911807Z             },
2026-06-19T23:28:15.5911927Z             {
2026-06-19T23:28:15.5912098Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-19T23:28:15.5912232Z               "line": 20
2026-06-19T23:28:15.5912356Z             },
2026-06-19T23:28:15.5912476Z             {
2026-06-19T23:28:15.5912636Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-19T23:28:15.5912761Z               "line": 100
2026-06-19T23:28:15.5912890Z             },
2026-06-19T23:28:15.5913014Z             {
2026-06-19T23:28:15.5913177Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.5913313Z               "line": 585
2026-06-19T23:28:15.5913442Z             },
2026-06-19T23:28:15.5913564Z             {
2026-06-19T23:28:15.5913749Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-19T23:28:15.5913869Z               "line": 68
2026-06-19T23:28:15.5914001Z             },
2026-06-19T23:28:15.5914132Z             {
2026-06-19T23:28:15.5914306Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-19T23:28:15.5914441Z               "line": 80
2026-06-19T23:28:15.5914560Z             }
2026-06-19T23:28:15.5914688Z           ]
2026-06-19T23:28:15.5914813Z         },
2026-06-19T23:28:15.5914936Z         "int": {
2026-06-19T23:28:15.5915066Z           "complete": true,
2026-06-19T23:28:15.5915188Z           "evidence": [
2026-06-19T23:28:15.5915313Z             {
2026-06-19T23:28:15.5915476Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-19T23:28:15.5915604Z               "line": 44
2026-06-19T23:28:15.5915734Z             }
2026-06-19T23:28:15.5915860Z           ]
2026-06-19T23:28:15.5915989Z         },
2026-06-19T23:28:15.5916112Z         "unit": {
2026-06-19T23:28:15.5916244Z           "complete": true,
2026-06-19T23:28:15.5916374Z           "evidence": [
2026-06-19T23:28:15.5916502Z             {
2026-06-19T23:28:15.5916675Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5916916Z               "line": 1181
2026-06-19T23:28:15.5917036Z             },
2026-06-19T23:28:15.5917159Z             {
2026-06-19T23:28:15.5917328Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.5917456Z               "line": 1197
2026-06-19T23:28:15.5917580Z             },
2026-06-19T23:28:15.5917703Z             {
2026-06-19T23:28:15.5917870Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5918009Z               "line": 2066
2026-06-19T23:28:15.5918137Z             },
2026-06-19T23:28:15.5918263Z             {
2026-06-19T23:28:15.5918525Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-19T23:28:15.5918658Z               "line": 152
2026-06-19T23:28:15.5918790Z             },
2026-06-19T23:28:15.5918909Z             {
2026-06-19T23:28:15.5919142Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-19T23:28:15.5919277Z               "line": 175
2026-06-19T23:28:15.5919409Z             },
2026-06-19T23:28:15.5919530Z             {
2026-06-19T23:28:15.5919695Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-19T23:28:15.5919829Z               "line": 186
2026-06-19T23:28:15.5919953Z             },
2026-06-19T23:28:15.5920077Z             {
2026-06-19T23:28:15.5920230Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-19T23:28:15.5920353Z               "line": 202
2026-06-19T23:28:15.5920469Z             },
2026-06-19T23:28:15.5920597Z             {
2026-06-19T23:28:15.5920759Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-19T23:28:15.5920893Z               "line": 216
2026-06-19T23:28:15.5921025Z             },
2026-06-19T23:28:15.5921144Z             {
2026-06-19T23:28:15.5921314Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-19T23:28:15.5921442Z               "line": 137
2026-06-19T23:28:15.5921567Z             },
2026-06-19T23:28:15.5921689Z             {
2026-06-19T23:28:15.5921844Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5921985Z               "line": 8124
2026-06-19T23:28:15.5922106Z             },
2026-06-19T23:28:15.5922238Z             {
2026-06-19T23:28:15.5922397Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-19T23:28:15.5922530Z               "line": 30
2026-06-19T23:28:15.5922648Z             },
2026-06-19T23:28:15.5922778Z             {
2026-06-19T23:28:15.5922940Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-19T23:28:15.5923069Z               "line": 73
2026-06-19T23:28:15.5923197Z             }
2026-06-19T23:28:15.5923322Z           ]
2026-06-19T23:28:15.5923445Z         }
2026-06-19T23:28:15.5923574Z       }
2026-06-19T23:28:15.5923704Z     },
2026-06-19T23:28:15.5923816Z     {
2026-06-19T23:28:15.5923992Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-19T23:28:15.5928179Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-19T23:28:15.5928479Z       "requiredStages": [
2026-06-19T23:28:15.5928602Z         "impl",
2026-06-19T23:28:15.5928731Z         "unit",
2026-06-19T23:28:15.5928852Z         "int"
2026-06-19T23:28:15.5929051Z       ],
2026-06-19T23:28:15.5929171Z       "stages": {
2026-06-19T23:28:15.5929292Z         "doc": {
2026-06-19T23:28:15.5929431Z           "complete": false,
2026-06-19T23:28:15.5929561Z           "evidence": []
2026-06-19T23:28:15.5929683Z         },
2026-06-19T23:28:15.5929913Z         "impl": {
2026-06-19T23:28:15.5930056Z           "complete": true,
2026-06-19T23:28:15.5930180Z           "evidence": [
2026-06-19T23:28:15.5930313Z             {
2026-06-19T23:28:15.5930489Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5930622Z               "line": 510
2026-06-19T23:28:15.5930758Z             },
2026-06-19T23:28:15.5930881Z             {
2026-06-19T23:28:15.5931048Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5931180Z               "line": 704
2026-06-19T23:28:15.5931300Z             }
2026-06-19T23:28:15.5931425Z           ]
2026-06-19T23:28:15.5931552Z         },
2026-06-19T23:28:15.5931680Z         "int": {
2026-06-19T23:28:15.5931821Z           "complete": true,
2026-06-19T23:28:15.5931959Z           "evidence": [
2026-06-19T23:28:15.5932079Z             {
2026-06-19T23:28:15.5932245Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5932375Z               "line": 1119
2026-06-19T23:28:15.5932517Z             },
2026-06-19T23:28:15.5932637Z             {
2026-06-19T23:28:15.5932822Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-19T23:28:15.5932957Z               "line": 312
2026-06-19T23:28:15.5933080Z             }
2026-06-19T23:28:15.5933208Z           ]
2026-06-19T23:28:15.5933338Z         },
2026-06-19T23:28:15.5933461Z         "unit": {
2026-06-19T23:28:15.5933596Z           "complete": true,
2026-06-19T23:28:15.5933724Z           "evidence": [
2026-06-19T23:28:15.5933852Z             {
2026-06-19T23:28:15.5934019Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5934162Z               "line": 821
2026-06-19T23:28:15.5934283Z             }
2026-06-19T23:28:15.5934410Z           ]
2026-06-19T23:28:15.5934533Z         }
2026-06-19T23:28:15.5934661Z       }
2026-06-19T23:28:15.5934783Z     },
2026-06-19T23:28:15.5934903Z     {
2026-06-19T23:28:15.5935060Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-19T23:28:15.5935379Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-19T23:28:15.5935509Z       "requiredStages": [
2026-06-19T23:28:15.5935633Z         "impl",
2026-06-19T23:28:15.5935765Z         "unit"
2026-06-19T23:28:15.5935886Z       ],
2026-06-19T23:28:15.5936019Z       "stages": {
2026-06-19T23:28:15.5936143Z         "doc": {
2026-06-19T23:28:15.5936281Z           "complete": true,
2026-06-19T23:28:15.5936419Z           "evidence": [
2026-06-19T23:28:15.5936539Z             {
2026-06-19T23:28:15.5936696Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.5936830Z               "line": 133
2026-06-19T23:28:15.5936943Z             }
2026-06-19T23:28:15.5937071Z           ]
2026-06-19T23:28:15.5937190Z         },
2026-06-19T23:28:15.5937317Z         "impl": {
2026-06-19T23:28:15.5937441Z           "complete": true,
2026-06-19T23:28:15.5937575Z           "evidence": [
2026-06-19T23:28:15.5937703Z             {
2026-06-19T23:28:15.5937865Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.5937993Z               "line": 65
2026-06-19T23:28:15.5938114Z             },
2026-06-19T23:28:15.5938228Z             {
2026-06-19T23:28:15.5938391Z               "path": "crates/spt-proto/src/id.rs",
2026-06-19T23:28:15.5938523Z               "line": 17
2026-06-19T23:28:15.5938753Z             },
2026-06-19T23:28:15.5938872Z             {
2026-06-19T23:28:15.5939106Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5939239Z               "line": 146
2026-06-19T23:28:15.5939368Z             },
2026-06-19T23:28:15.5939486Z             {
2026-06-19T23:28:15.5939655Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5939792Z               "line": 306
2026-06-19T23:28:15.5939914Z             },
2026-06-19T23:28:15.5940039Z             {
2026-06-19T23:28:15.5940195Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.5940330Z               "line": 437
2026-06-19T23:28:15.5940572Z             },
2026-06-19T23:28:15.5940698Z             {
2026-06-19T23:28:15.5940853Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.5940988Z               "line": 32
2026-06-19T23:28:15.5941122Z             },
2026-06-19T23:28:15.5941245Z             {
2026-06-19T23:28:15.5941407Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5941531Z               "line": 1276
2026-06-19T23:28:15.5941661Z             },
2026-06-19T23:28:15.5941779Z             {
2026-06-19T23:28:15.5941923Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5942050Z               "line": 6133
2026-06-19T23:28:15.5942178Z             },
2026-06-19T23:28:15.5942307Z             {
2026-06-19T23:28:15.5942458Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5942577Z               "line": 6415
2026-06-19T23:28:15.5942706Z             }
2026-06-19T23:28:15.5942829Z           ]
2026-06-19T23:28:15.5942959Z         },
2026-06-19T23:28:15.5943091Z         "int": {
2026-06-19T23:28:15.5943231Z           "complete": false,
2026-06-19T23:28:15.5943359Z           "evidence": []
2026-06-19T23:28:15.5943483Z         },
2026-06-19T23:28:15.5943616Z         "unit": {
2026-06-19T23:28:15.5943749Z           "complete": true,
2026-06-19T23:28:15.5943880Z           "evidence": [
2026-06-19T23:28:15.5944012Z             {
2026-06-19T23:28:15.5944175Z               "path": "crates/spt-proto/src/id.rs",
2026-06-19T23:28:15.5944312Z               "line": 94
2026-06-19T23:28:15.5944427Z             },
2026-06-19T23:28:15.5944551Z             {
2026-06-19T23:28:15.5944713Z               "path": "crates/spt-proto/src/id.rs",
2026-06-19T23:28:15.5944848Z               "line": 111
2026-06-19T23:28:15.5944965Z             },
2026-06-19T23:28:15.5945079Z             {
2026-06-19T23:28:15.5945230Z               "path": "crates/spt-proto/src/id.rs",
2026-06-19T23:28:15.5945362Z               "line": 124
2026-06-19T23:28:15.5945487Z             },
2026-06-19T23:28:15.5945620Z             {
2026-06-19T23:28:15.5945774Z               "path": "crates/spt-proto/src/id.rs",
2026-06-19T23:28:15.5945902Z               "line": 134
2026-06-19T23:28:15.5946030Z             },
2026-06-19T23:28:15.5946155Z             {
2026-06-19T23:28:15.5946316Z               "path": "crates/spt-proto/src/id.rs",
2026-06-19T23:28:15.5946455Z               "line": 144
2026-06-19T23:28:15.5946579Z             },
2026-06-19T23:28:15.5946708Z             {
2026-06-19T23:28:15.5946865Z               "path": "crates/spt-proto/src/id.rs",
2026-06-19T23:28:15.5946994Z               "line": 156
2026-06-19T23:28:15.5947123Z             },
2026-06-19T23:28:15.5947247Z             {
2026-06-19T23:28:15.5947428Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.5947555Z               "line": 746
2026-06-19T23:28:15.5947679Z             },
2026-06-19T23:28:15.5947802Z             {
2026-06-19T23:28:15.5947967Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.5948107Z               "line": 309
2026-06-19T23:28:15.5948220Z             }
2026-06-19T23:28:15.5948345Z           ]
2026-06-19T23:28:15.5948464Z         }
2026-06-19T23:28:15.5948592Z       }
2026-06-19T23:28:15.5948717Z     },
2026-06-19T23:28:15.5948840Z     {
2026-06-19T23:28:15.5949069Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-19T23:28:15.5949360Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-19T23:28:15.5949503Z       "requiredStages": [
2026-06-19T23:28:15.5949628Z         "impl",
2026-06-19T23:28:15.5949751Z         "unit"
2026-06-19T23:28:15.5949876Z       ],
2026-06-19T23:28:15.5950004Z       "stages": {
2026-06-19T23:28:15.5950128Z         "doc": {
2026-06-19T23:28:15.5950258Z           "complete": false,
2026-06-19T23:28:15.5950399Z           "evidence": []
2026-06-19T23:28:15.5950522Z         },
2026-06-19T23:28:15.5950652Z         "impl": {
2026-06-19T23:28:15.5950789Z           "complete": true,
2026-06-19T23:28:15.5950914Z           "evidence": [
2026-06-19T23:28:15.5951147Z             {
2026-06-19T23:28:15.5951314Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.5951447Z               "line": 128
2026-06-19T23:28:15.5951563Z             }
2026-06-19T23:28:15.5951677Z           ]
2026-06-19T23:28:15.5951795Z         },
2026-06-19T23:28:15.5951921Z         "int": {
2026-06-19T23:28:15.5952067Z           "complete": false,
2026-06-19T23:28:15.5952188Z           "evidence": []
2026-06-19T23:28:15.5952315Z         },
2026-06-19T23:28:15.5952439Z         "unit": {
2026-06-19T23:28:15.5952583Z           "complete": true,
2026-06-19T23:28:15.5952710Z           "evidence": [
2026-06-19T23:28:15.5952844Z             {
2026-06-19T23:28:15.5953013Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.5953142Z               "line": 205
2026-06-19T23:28:15.5953271Z             }
2026-06-19T23:28:15.5953394Z           ]
2026-06-19T23:28:15.5953519Z         }
2026-06-19T23:28:15.5953642Z       }
2026-06-19T23:28:15.5953767Z     },
2026-06-19T23:28:15.5953896Z     {
2026-06-19T23:28:15.5954058Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-19T23:28:15.5954262Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-19T23:28:15.5954392Z       "requiredStages": [
2026-06-19T23:28:15.5954529Z         "impl",
2026-06-19T23:28:15.5954653Z         "unit"
2026-06-19T23:28:15.5954774Z       ],
2026-06-19T23:28:15.5954901Z       "stages": {
2026-06-19T23:28:15.5955031Z         "doc": {
2026-06-19T23:28:15.5955167Z           "complete": false,
2026-06-19T23:28:15.5955297Z           "evidence": []
2026-06-19T23:28:15.5955427Z         },
2026-06-19T23:28:15.5955554Z         "impl": {
2026-06-19T23:28:15.5955682Z           "complete": true,
2026-06-19T23:28:15.5955809Z           "evidence": [
2026-06-19T23:28:15.5955941Z             {
2026-06-19T23:28:15.5956115Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5956247Z               "line": 342
2026-06-19T23:28:15.5956376Z             },
2026-06-19T23:28:15.5956499Z             {
2026-06-19T23:28:15.5956663Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5956800Z               "line": 353
2026-06-19T23:28:15.5956929Z             },
2026-06-19T23:28:15.5957053Z             {
2026-06-19T23:28:15.5957210Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5957354Z               "line": 371
2026-06-19T23:28:15.5957458Z             }
2026-06-19T23:28:15.5957588Z           ]
2026-06-19T23:28:15.5957716Z         },
2026-06-19T23:28:15.5957835Z         "int": {
2026-06-19T23:28:15.5957979Z           "complete": false,
2026-06-19T23:28:15.5958101Z           "evidence": []
2026-06-19T23:28:15.5958229Z         },
2026-06-19T23:28:15.5958343Z         "unit": {
2026-06-19T23:28:15.5958489Z           "complete": true,
2026-06-19T23:28:15.5958624Z           "evidence": [
2026-06-19T23:28:15.5958747Z             {
2026-06-19T23:28:15.5958910Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5959118Z               "line": 395
2026-06-19T23:28:15.5959244Z             },
2026-06-19T23:28:15.5959363Z             {
2026-06-19T23:28:15.5959516Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5959658Z               "line": 416
2026-06-19T23:28:15.5959777Z             },
2026-06-19T23:28:15.5960001Z             {
2026-06-19T23:28:15.5960155Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5960297Z               "line": 785
2026-06-19T23:28:15.5960411Z             },
2026-06-19T23:28:15.5960541Z             {
2026-06-19T23:28:15.5960707Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5960827Z               "line": 796
2026-06-19T23:28:15.5960954Z             },
2026-06-19T23:28:15.5961078Z             {
2026-06-19T23:28:15.5961241Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5961373Z               "line": 809
2026-06-19T23:28:15.5961494Z             }
2026-06-19T23:28:15.5961621Z           ]
2026-06-19T23:28:15.5961846Z         }
2026-06-19T23:28:15.5961974Z       }
2026-06-19T23:28:15.5962099Z     },
2026-06-19T23:28:15.5962217Z     {
2026-06-19T23:28:15.5962380Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-19T23:28:15.5970027Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-19T23:28:15.5970261Z       "requiredStages": [
2026-06-19T23:28:15.5970385Z         "impl",
2026-06-19T23:28:15.5970509Z         "unit",
2026-06-19T23:28:15.5970637Z         "int"
2026-06-19T23:28:15.5970763Z       ],
2026-06-19T23:28:15.5970890Z       "stages": {
2026-06-19T23:28:15.5971020Z         "doc": {
2026-06-19T23:28:15.5971157Z           "complete": false,
2026-06-19T23:28:15.5971291Z           "evidence": []
2026-06-19T23:28:15.5971421Z         },
2026-06-19T23:28:15.5971543Z         "impl": {
2026-06-19T23:28:15.5971676Z           "complete": true,
2026-06-19T23:28:15.5971796Z           "evidence": [
2026-06-19T23:28:15.5971928Z             {
2026-06-19T23:28:15.5972215Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5972340Z               "line": 296
2026-06-19T23:28:15.5972468Z             },
2026-06-19T23:28:15.5972592Z             {
2026-06-19T23:28:15.5972759Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5972892Z               "line": 702
2026-06-19T23:28:15.5973021Z             },
2026-06-19T23:28:15.5973145Z             {
2026-06-19T23:28:15.5973312Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5973449Z               "line": 818
2026-06-19T23:28:15.5973574Z             }
2026-06-19T23:28:15.5973699Z           ]
2026-06-19T23:28:15.5973926Z         },
2026-06-19T23:28:15.5974053Z         "int": {
2026-06-19T23:28:15.5974195Z           "complete": true,
2026-06-19T23:28:15.5974329Z           "evidence": [
2026-06-19T23:28:15.5974457Z             {
2026-06-19T23:28:15.5974662Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.5974800Z               "line": 222
2026-06-19T23:28:15.5974921Z             },
2026-06-19T23:28:15.5975053Z             {
2026-06-19T23:28:15.5975255Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.5975387Z               "line": 348
2026-06-19T23:28:15.5975517Z             }
2026-06-19T23:28:15.5975640Z           ]
2026-06-19T23:28:15.5975768Z         },
2026-06-19T23:28:15.5975894Z         "unit": {
2026-06-19T23:28:15.5976031Z           "complete": true,
2026-06-19T23:28:15.5976161Z           "evidence": [
2026-06-19T23:28:15.5976288Z             {
2026-06-19T23:28:15.5976461Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5976603Z               "line": 2094
2026-06-19T23:28:15.5976731Z             },
2026-06-19T23:28:15.5976855Z             {
2026-06-19T23:28:15.5977029Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.5977163Z               "line": 2152
2026-06-19T23:28:15.5977300Z             }
2026-06-19T23:28:15.5977430Z           ]
2026-06-19T23:28:15.5977549Z         }
2026-06-19T23:28:15.5977667Z       }
2026-06-19T23:28:15.5977793Z     },
2026-06-19T23:28:15.5977921Z     {
2026-06-19T23:28:15.5978078Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-19T23:28:15.5978727Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-19T23:28:15.5978874Z       "requiredStages": [
2026-06-19T23:28:15.5979076Z         "impl",
2026-06-19T23:28:15.5979193Z         "unit"
2026-06-19T23:28:15.5979321Z       ],
2026-06-19T23:28:15.5979449Z       "stages": {
2026-06-19T23:28:15.5979576Z         "doc": {
2026-06-19T23:28:15.5979706Z           "complete": false,
2026-06-19T23:28:15.5979843Z           "evidence": []
2026-06-19T23:28:15.5979968Z         },
2026-06-19T23:28:15.5980106Z         "impl": {
2026-06-19T23:28:15.5980239Z           "complete": true,
2026-06-19T23:28:15.5980378Z           "evidence": [
2026-06-19T23:28:15.5980506Z             {
2026-06-19T23:28:15.5980684Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5980821Z               "line": 759
2026-06-19T23:28:15.5980936Z             }
2026-06-19T23:28:15.5981064Z           ]
2026-06-19T23:28:15.5981188Z         },
2026-06-19T23:28:15.5981314Z         "int": {
2026-06-19T23:28:15.5981455Z           "complete": false,
2026-06-19T23:28:15.5981580Z           "evidence": []
2026-06-19T23:28:15.5981708Z         },
2026-06-19T23:28:15.5981827Z         "unit": {
2026-06-19T23:28:15.5981967Z           "complete": true,
2026-06-19T23:28:15.5982103Z           "evidence": [
2026-06-19T23:28:15.5982236Z             {
2026-06-19T23:28:15.5982408Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.5982546Z               "line": 873
2026-06-19T23:28:15.5982680Z             }
2026-06-19T23:28:15.5982803Z           ]
2026-06-19T23:28:15.5983056Z         }
2026-06-19T23:28:15.5983176Z       }
2026-06-19T23:28:15.5983300Z     },
2026-06-19T23:28:15.5983414Z     {
2026-06-19T23:28:15.5983601Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-19T23:28:15.5986043Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-19T23:28:15.5986319Z       "requiredStages": [
2026-06-19T23:28:15.5986454Z         "impl",
2026-06-19T23:28:15.5986577Z         "unit",
2026-06-19T23:28:15.5986692Z         "int"
2026-06-19T23:28:15.5986820Z       ],
2026-06-19T23:28:15.5986944Z       "stages": {
2026-06-19T23:28:15.5987064Z         "doc": {
2026-06-19T23:28:15.5987201Z           "complete": false,
2026-06-19T23:28:15.5987324Z           "evidence": []
2026-06-19T23:28:15.5987452Z         },
2026-06-19T23:28:15.5987584Z         "impl": {
2026-06-19T23:28:15.5987713Z           "complete": true,
2026-06-19T23:28:15.5987847Z           "evidence": [
2026-06-19T23:28:15.5987975Z             {
2026-06-19T23:28:15.5988152Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5988280Z               "line": 705
2026-06-19T23:28:15.5988410Z             }
2026-06-19T23:28:15.5988532Z           ]
2026-06-19T23:28:15.5988653Z         },
2026-06-19T23:28:15.5988781Z         "int": {
2026-06-19T23:28:15.5988924Z           "complete": true,
2026-06-19T23:28:15.5989153Z           "evidence": [
2026-06-19T23:28:15.5989273Z             {
2026-06-19T23:28:15.5989468Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-19T23:28:15.5989598Z               "line": 24
2026-06-19T23:28:15.5989730Z             }
2026-06-19T23:28:15.5989857Z           ]
2026-06-19T23:28:15.5989977Z         },
2026-06-19T23:28:15.5990108Z         "unit": {
2026-06-19T23:28:15.5990246Z           "complete": true,
2026-06-19T23:28:15.5990385Z           "evidence": [
2026-06-19T23:28:15.5990508Z             {
2026-06-19T23:28:15.5990681Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5990823Z               "line": 918
2026-06-19T23:28:15.5990939Z             }
2026-06-19T23:28:15.5991071Z           ]
2026-06-19T23:28:15.5991196Z         }
2026-06-19T23:28:15.5991309Z       }
2026-06-19T23:28:15.5991434Z     },
2026-06-19T23:28:15.5991559Z     {
2026-06-19T23:28:15.5991729Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-19T23:28:15.5995378Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-19T23:28:15.5995663Z       "requiredStages": [
2026-06-19T23:28:15.5995793Z         "impl",
2026-06-19T23:28:15.5995920Z         "unit",
2026-06-19T23:28:15.5996046Z         "int"
2026-06-19T23:28:15.5996173Z       ],
2026-06-19T23:28:15.5996303Z       "stages": {
2026-06-19T23:28:15.5996427Z         "doc": {
2026-06-19T23:28:15.5996559Z           "complete": false,
2026-06-19T23:28:15.5996789Z           "evidence": []
2026-06-19T23:28:15.5996913Z         },
2026-06-19T23:28:15.5997047Z         "impl": {
2026-06-19T23:28:15.5997184Z           "complete": true,
2026-06-19T23:28:15.5997319Z           "evidence": [
2026-06-19T23:28:15.5997446Z             {
2026-06-19T23:28:15.5997620Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.5997756Z               "line": 391
2026-06-19T23:28:15.5997879Z             },
2026-06-19T23:28:15.5998008Z             {
2026-06-19T23:28:15.5998163Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.5998293Z               "line": 318
2026-06-19T23:28:15.5998416Z             },
2026-06-19T23:28:15.5998545Z             {
2026-06-19T23:28:15.5998698Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5998831Z               "line": 1722
2026-06-19T23:28:15.5999027Z             },
2026-06-19T23:28:15.5999155Z             {
2026-06-19T23:28:15.5999308Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.5999446Z               "line": 3163
2026-06-19T23:28:15.5999571Z             }
2026-06-19T23:28:15.5999704Z           ]
2026-06-19T23:28:15.5999829Z         },
2026-06-19T23:28:15.5999961Z         "int": {
2026-06-19T23:28:15.6000095Z           "complete": true,
2026-06-19T23:28:15.6000224Z           "evidence": [
2026-06-19T23:28:15.6000356Z             {
2026-06-19T23:28:15.6000547Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-19T23:28:15.6000668Z               "line": 353
2026-06-19T23:28:15.6000793Z             },
2026-06-19T23:28:15.6000918Z             {
2026-06-19T23:28:15.6001117Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-19T23:28:15.6001251Z               "line": 23
2026-06-19T23:28:15.6001378Z             }
2026-06-19T23:28:15.6001485Z           ]
2026-06-19T23:28:15.6001612Z         },
2026-06-19T23:28:15.6001742Z         "unit": {
2026-06-19T23:28:15.6001879Z           "complete": true,
2026-06-19T23:28:15.6002027Z           "evidence": [
2026-06-19T23:28:15.6002157Z             {
2026-06-19T23:28:15.6002328Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.6002453Z               "line": 717
2026-06-19T23:28:15.6002585Z             },
2026-06-19T23:28:15.6002710Z             {
2026-06-19T23:28:15.6002866Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6003001Z               "line": 7835
2026-06-19T23:28:15.6003115Z             }
2026-06-19T23:28:15.6003247Z           ]
2026-06-19T23:28:15.6003371Z         }
2026-06-19T23:28:15.6003500Z       }
2026-06-19T23:28:15.6003623Z     },
2026-06-19T23:28:15.6003748Z     {
2026-06-19T23:28:15.6003924Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-19T23:28:15.6007306Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-19T23:28:15.6007588Z       "requiredStages": [
2026-06-19T23:28:15.6007721Z         "impl",
2026-06-19T23:28:15.6007940Z         "unit",
2026-06-19T23:28:15.6008074Z         "int"
2026-06-19T23:28:15.6008208Z       ],
2026-06-19T23:28:15.6008335Z       "stages": {
2026-06-19T23:28:15.6008468Z         "doc": {
2026-06-19T23:28:15.6008610Z           "complete": false,
2026-06-19T23:28:15.6008737Z           "evidence": []
2026-06-19T23:28:15.6008868Z         },
2026-06-19T23:28:15.6009076Z         "impl": {
2026-06-19T23:28:15.6009211Z           "complete": true,
2026-06-19T23:28:15.6009386Z           "evidence": [
2026-06-19T23:28:15.6009525Z             {
2026-06-19T23:28:15.6009725Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6009863Z               "line": 64
2026-06-19T23:28:15.6009991Z             },
2026-06-19T23:28:15.6010112Z             {
2026-06-19T23:28:15.6010306Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6010451Z               "line": 78
2026-06-19T23:28:15.6010578Z             },
2026-06-19T23:28:15.6010704Z             {
2026-06-19T23:28:15.6010878Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6011021Z               "line": 170
2026-06-19T23:28:15.6011144Z             },
2026-06-19T23:28:15.6011271Z             {
2026-06-19T23:28:15.6011443Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6011576Z               "line": 185
2026-06-19T23:28:15.6011701Z             },
2026-06-19T23:28:15.6011825Z             {
2026-06-19T23:28:15.6012001Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6012135Z               "line": 195
2026-06-19T23:28:15.6012258Z             },
2026-06-19T23:28:15.6012388Z             {
2026-06-19T23:28:15.6012558Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6012689Z               "line": 205
2026-06-19T23:28:15.6012812Z             },
2026-06-19T23:28:15.6012931Z             {
2026-06-19T23:28:15.6013101Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6013246Z               "line": 294
2026-06-19T23:28:15.6013379Z             },
2026-06-19T23:28:15.6013503Z             {
2026-06-19T23:28:15.6013666Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6013797Z               "line": 308
2026-06-19T23:28:15.6013931Z             },
2026-06-19T23:28:15.6014056Z             {
2026-06-19T23:28:15.6014236Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6014366Z               "line": 377
2026-06-19T23:28:15.6014484Z             },
2026-06-19T23:28:15.6014609Z             {
2026-06-19T23:28:15.6014779Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6014914Z               "line": 437
2026-06-19T23:28:15.6015038Z             },
2026-06-19T23:28:15.6015166Z             {
2026-06-19T23:28:15.6015342Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6015471Z               "line": 455
2026-06-19T23:28:15.6015605Z             }
2026-06-19T23:28:15.6015733Z           ]
2026-06-19T23:28:15.6015868Z         },
2026-06-19T23:28:15.6016000Z         "int": {
2026-06-19T23:28:15.6016142Z           "complete": true,
2026-06-19T23:28:15.6016288Z           "evidence": [
2026-06-19T23:28:15.6016411Z             {
2026-06-19T23:28:15.6016608Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-19T23:28:15.6016842Z               "line": 45
2026-06-19T23:28:15.6016970Z             },
2026-06-19T23:28:15.6026317Z             {
2026-06-19T23:28:15.6026565Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-19T23:28:15.6026703Z               "line": 354
2026-06-19T23:28:15.6026835Z             },
2026-06-19T23:28:15.6026957Z             {
2026-06-19T23:28:15.6027164Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-19T23:28:15.6027300Z               "line": 31
2026-06-19T23:28:15.6027425Z             }
2026-06-19T23:28:15.6027544Z           ]
2026-06-19T23:28:15.6027668Z         },
2026-06-19T23:28:15.6027954Z         "unit": {
2026-06-19T23:28:15.6028102Z           "complete": true,
2026-06-19T23:28:15.6028230Z           "evidence": [
2026-06-19T23:28:15.6028351Z             {
2026-06-19T23:28:15.6028536Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6028661Z               "line": 727
2026-06-19T23:28:15.6028788Z             }
2026-06-19T23:28:15.6028908Z           ]
2026-06-19T23:28:15.6029137Z         }
2026-06-19T23:28:15.6029262Z       }
2026-06-19T23:28:15.6029371Z     },
2026-06-19T23:28:15.6029493Z     {
2026-06-19T23:28:15.6029646Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-19T23:28:15.6029915Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-19T23:28:15.6030077Z       "requiredStages": [
2026-06-19T23:28:15.6030220Z         "impl",
2026-06-19T23:28:15.6030350Z         "unit"
2026-06-19T23:28:15.6030473Z       ],
2026-06-19T23:28:15.6030622Z       "stages": {
2026-06-19T23:28:15.6030745Z         "doc": {
2026-06-19T23:28:15.6030889Z           "complete": false,
2026-06-19T23:28:15.6031017Z           "evidence": []
2026-06-19T23:28:15.6031141Z         },
2026-06-19T23:28:15.6031260Z         "impl": {
2026-06-19T23:28:15.6031389Z           "complete": true,
2026-06-19T23:28:15.6031519Z           "evidence": [
2026-06-19T23:28:15.6031641Z             {
2026-06-19T23:28:15.6031805Z               "path": "crates/spt/src/api/auth.rs",
2026-06-19T23:28:15.6031924Z               "line": 14
2026-06-19T23:28:15.6032055Z             },
2026-06-19T23:28:15.6032180Z             {
2026-06-19T23:28:15.6032339Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.6032468Z               "line": 566
2026-06-19T23:28:15.6032593Z             }
2026-06-19T23:28:15.6032720Z           ]
2026-06-19T23:28:15.6032850Z         },
2026-06-19T23:28:15.6032973Z         "int": {
2026-06-19T23:28:15.6033117Z           "complete": false,
2026-06-19T23:28:15.6033250Z           "evidence": []
2026-06-19T23:28:15.6033373Z         },
2026-06-19T23:28:15.6033517Z         "unit": {
2026-06-19T23:28:15.6033655Z           "complete": true,
2026-06-19T23:28:15.6033785Z           "evidence": [
2026-06-19T23:28:15.6033903Z             {
2026-06-19T23:28:15.6034056Z               "path": "crates/spt/src/api/auth.rs",
2026-06-19T23:28:15.6034175Z               "line": 130
2026-06-19T23:28:15.6034308Z             },
2026-06-19T23:28:15.6034433Z             {
2026-06-19T23:28:15.6034590Z               "path": "crates/spt/src/api/auth.rs",
2026-06-19T23:28:15.6034720Z               "line": 138
2026-06-19T23:28:15.6034847Z             },
2026-06-19T23:28:15.6034970Z             {
2026-06-19T23:28:15.6035119Z               "path": "crates/spt/src/api/auth.rs",
2026-06-19T23:28:15.6035251Z               "line": 146
2026-06-19T23:28:15.6035376Z             },
2026-06-19T23:28:15.6035505Z             {
2026-06-19T23:28:15.6035647Z               "path": "crates/spt/src/api/auth.rs",
2026-06-19T23:28:15.6035786Z               "line": 154
2026-06-19T23:28:15.6035918Z             },
2026-06-19T23:28:15.6036034Z             {
2026-06-19T23:28:15.6036209Z               "path": "crates/spt/src/api/auth.rs",
2026-06-19T23:28:15.6036368Z               "line": 162
2026-06-19T23:28:15.6036501Z             },
2026-06-19T23:28:15.6036626Z             {
2026-06-19T23:28:15.6036781Z               "path": "crates/spt/src/api/auth.rs",
2026-06-19T23:28:15.6037068Z               "line": 170
2026-06-19T23:28:15.6037191Z             }
2026-06-19T23:28:15.6037325Z           ]
2026-06-19T23:28:15.6037441Z         }
2026-06-19T23:28:15.6037570Z       }
2026-06-19T23:28:15.6037690Z     },
2026-06-19T23:28:15.6037818Z     {
2026-06-19T23:28:15.6037981Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-19T23:28:15.6039077Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-19T23:28:15.6039348Z       "requiredStages": [
2026-06-19T23:28:15.6039478Z         "impl",
2026-06-19T23:28:15.6039611Z         "unit"
2026-06-19T23:28:15.6039735Z       ],
2026-06-19T23:28:15.6039860Z       "stages": {
2026-06-19T23:28:15.6039987Z         "doc": {
2026-06-19T23:28:15.6040120Z           "complete": false,
2026-06-19T23:28:15.6040262Z           "evidence": []
2026-06-19T23:28:15.6040385Z         },
2026-06-19T23:28:15.6040514Z         "impl": {
2026-06-19T23:28:15.6040642Z           "complete": true,
2026-06-19T23:28:15.6040776Z           "evidence": [
2026-06-19T23:28:15.6040900Z             {
2026-06-19T23:28:15.6041091Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6041224Z               "line": 34
2026-06-19T23:28:15.6041343Z             }
2026-06-19T23:28:15.6041473Z           ]
2026-06-19T23:28:15.6041601Z         },
2026-06-19T23:28:15.6041715Z         "int": {
2026-06-19T23:28:15.6041849Z           "complete": false,
2026-06-19T23:28:15.6041987Z           "evidence": []
2026-06-19T23:28:15.6042112Z         },
2026-06-19T23:28:15.6042239Z         "unit": {
2026-06-19T23:28:15.6042370Z           "complete": true,
2026-06-19T23:28:15.6042507Z           "evidence": [
2026-06-19T23:28:15.6042620Z             {
2026-06-19T23:28:15.6042819Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6042951Z               "line": 188
2026-06-19T23:28:15.6043081Z             },
2026-06-19T23:28:15.6043204Z             {
2026-06-19T23:28:15.6043396Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6043533Z               "line": 200
2026-06-19T23:28:15.6043648Z             },
2026-06-19T23:28:15.6043772Z             {
2026-06-19T23:28:15.6043943Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6044077Z               "line": 211
2026-06-19T23:28:15.6044205Z             },
2026-06-19T23:28:15.6044326Z             {
2026-06-19T23:28:15.6044511Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6044646Z               "line": 253
2026-06-19T23:28:15.6044773Z             },
2026-06-19T23:28:15.6044892Z             {
2026-06-19T23:28:15.6045078Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6045222Z               "line": 277
2026-06-19T23:28:15.6045351Z             },
2026-06-19T23:28:15.6045482Z             {
2026-06-19T23:28:15.6045665Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6045806Z               "line": 300
2026-06-19T23:28:15.6045936Z             },
2026-06-19T23:28:15.6046074Z             {
2026-06-19T23:28:15.6046270Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-19T23:28:15.6046413Z               "line": 316
2026-06-19T23:28:15.6046541Z             }
2026-06-19T23:28:15.6046666Z           ]
2026-06-19T23:28:15.6046793Z         }
2026-06-19T23:28:15.6046928Z       }
2026-06-19T23:28:15.6047057Z     },
2026-06-19T23:28:15.6047176Z     {
2026-06-19T23:28:15.6047337Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-19T23:28:15.6047941Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-19T23:28:15.6048188Z       "requiredStages": [
2026-06-19T23:28:15.6048317Z         "impl",
2026-06-19T23:28:15.6048445Z         "unit"
2026-06-19T23:28:15.6048565Z       ],
2026-06-19T23:28:15.6048692Z       "stages": {
2026-06-19T23:28:15.6048803Z         "doc": {
2026-06-19T23:28:15.6049036Z           "complete": false,
2026-06-19T23:28:15.6049161Z           "evidence": []
2026-06-19T23:28:15.6049289Z         },
2026-06-19T23:28:15.6049413Z         "impl": {
2026-06-19T23:28:15.6049542Z           "complete": true,
2026-06-19T23:28:15.6049680Z           "evidence": [
2026-06-19T23:28:15.6049796Z             {
2026-06-19T23:28:15.6050072Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6050204Z               "line": 29
2026-06-19T23:28:15.6050334Z             },
2026-06-19T23:28:15.6050454Z             {
2026-06-19T23:28:15.6050628Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6050771Z               "line": 174
2026-06-19T23:28:15.6050897Z             },
2026-06-19T23:28:15.6051026Z             {
2026-06-19T23:28:15.6051188Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6051316Z               "line": 194
2026-06-19T23:28:15.6051437Z             },
2026-06-19T23:28:15.6051564Z             {
2026-06-19T23:28:15.6051728Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6051855Z               "line": 222
2026-06-19T23:28:15.6051975Z             }
2026-06-19T23:28:15.6052099Z           ]
2026-06-19T23:28:15.6052223Z         },
2026-06-19T23:28:15.6052334Z         "int": {
2026-06-19T23:28:15.6052485Z           "complete": false,
2026-06-19T23:28:15.6052624Z           "evidence": []
2026-06-19T23:28:15.6052747Z         },
2026-06-19T23:28:15.6052872Z         "unit": {
2026-06-19T23:28:15.6052997Z           "complete": true,
2026-06-19T23:28:15.6053138Z           "evidence": [
2026-06-19T23:28:15.6053257Z             {
2026-06-19T23:28:15.6053435Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6053564Z               "line": 329
2026-06-19T23:28:15.6053684Z             },
2026-06-19T23:28:15.6053812Z             {
2026-06-19T23:28:15.6053984Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6054117Z               "line": 344
2026-06-19T23:28:15.6054232Z             },
2026-06-19T23:28:15.6054361Z             {
2026-06-19T23:28:15.6054528Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6054656Z               "line": 417
2026-06-19T23:28:15.6054780Z             },
2026-06-19T23:28:15.6054891Z             {
2026-06-19T23:28:15.6055062Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6055196Z               "line": 433
2026-06-19T23:28:15.6055319Z             },
2026-06-19T23:28:15.6055452Z             {
2026-06-19T23:28:15.6055619Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6055753Z               "line": 492
2026-06-19T23:28:15.6055883Z             },
2026-06-19T23:28:15.6056010Z             {
2026-06-19T23:28:15.6056162Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6056296Z               "line": 506
2026-06-19T23:28:15.6056434Z             },
2026-06-19T23:28:15.6056559Z             {
2026-06-19T23:28:15.6056724Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6056859Z               "line": 517
2026-06-19T23:28:15.6056991Z             },
2026-06-19T23:28:15.6057126Z             {
2026-06-19T23:28:15.6057288Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6057426Z               "line": 528
2026-06-19T23:28:15.6057559Z             }
2026-06-19T23:28:15.6057678Z           ]
2026-06-19T23:28:15.6057803Z         }
2026-06-19T23:28:15.6057930Z       }
2026-06-19T23:28:15.6058060Z     },
2026-06-19T23:28:15.6058180Z     {
2026-06-19T23:28:15.6058358Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-19T23:28:15.6059267Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-19T23:28:15.6059411Z       "requiredStages": [
2026-06-19T23:28:15.6059530Z         "impl",
2026-06-19T23:28:15.6059659Z         "unit"
2026-06-19T23:28:15.6059787Z       ],
2026-06-19T23:28:15.6059920Z       "stages": {
2026-06-19T23:28:15.6060050Z         "doc": {
2026-06-19T23:28:15.6060183Z           "complete": false,
2026-06-19T23:28:15.6060318Z           "evidence": []
2026-06-19T23:28:15.6060440Z         },
2026-06-19T23:28:15.6060574Z         "impl": {
2026-06-19T23:28:15.6060817Z           "complete": true,
2026-06-19T23:28:15.6060947Z           "evidence": [
2026-06-19T23:28:15.6061075Z             {
2026-06-19T23:28:15.6061255Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6061392Z               "line": 27
2026-06-19T23:28:15.6061524Z             },
2026-06-19T23:28:15.6061649Z             {
2026-06-19T23:28:15.6061834Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6061959Z               "line": 110
2026-06-19T23:28:15.6062087Z             },
2026-06-19T23:28:15.6062211Z             {
2026-06-19T23:28:15.6062393Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6062526Z               "line": 153
2026-06-19T23:28:15.6062650Z             },
2026-06-19T23:28:15.6062768Z             {
2026-06-19T23:28:15.6062941Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6063074Z               "line": 182
2026-06-19T23:28:15.6063204Z             },
2026-06-19T23:28:15.6063335Z             {
2026-06-19T23:28:15.6063533Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6063664Z               "line": 31
2026-06-19T23:28:15.6063787Z             },
2026-06-19T23:28:15.6063907Z             {
2026-06-19T23:28:15.6064109Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6064239Z               "line": 113
2026-06-19T23:28:15.6064362Z             },
2026-06-19T23:28:15.6064497Z             {
2026-06-19T23:28:15.6064687Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6064817Z               "line": 138
2026-06-19T23:28:15.6064940Z             }
2026-06-19T23:28:15.6065068Z           ]
2026-06-19T23:28:15.6065193Z         },
2026-06-19T23:28:15.6065311Z         "int": {
2026-06-19T23:28:15.6065451Z           "complete": false,
2026-06-19T23:28:15.6065574Z           "evidence": []
2026-06-19T23:28:15.6065712Z         },
2026-06-19T23:28:15.6065827Z         "unit": {
2026-06-19T23:28:15.6065960Z           "complete": true,
2026-06-19T23:28:15.6066090Z           "evidence": [
2026-06-19T23:28:15.6066222Z             {
2026-06-19T23:28:15.6066405Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6066541Z               "line": 261
2026-06-19T23:28:15.6066674Z             },
2026-06-19T23:28:15.6066799Z             {
2026-06-19T23:28:15.6066979Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6067109Z               "line": 276
2026-06-19T23:28:15.6067242Z             },
2026-06-19T23:28:15.6067367Z             {
2026-06-19T23:28:15.6067547Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6067681Z               "line": 293
2026-06-19T23:28:15.6067809Z             },
2026-06-19T23:28:15.6067937Z             {
2026-06-19T23:28:15.6068114Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6068252Z               "line": 310
2026-06-19T23:28:15.6068382Z             },
2026-06-19T23:28:15.6068505Z             {
2026-06-19T23:28:15.6068683Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6068810Z               "line": 327
2026-06-19T23:28:15.6069024Z             },
2026-06-19T23:28:15.6069260Z             {
2026-06-19T23:28:15.6069451Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.6069584Z               "line": 366
2026-06-19T23:28:15.6069699Z             },
2026-06-19T23:28:15.6069817Z             {
2026-06-19T23:28:15.6070005Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6070137Z               "line": 179
2026-06-19T23:28:15.6070257Z             },
2026-06-19T23:28:15.6070391Z             {
2026-06-19T23:28:15.6070582Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6070715Z               "line": 194
2026-06-19T23:28:15.6070963Z             },
2026-06-19T23:28:15.6071082Z             {
2026-06-19T23:28:15.6071269Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6071392Z               "line": 204
2026-06-19T23:28:15.6071517Z             },
2026-06-19T23:28:15.6071649Z             {
2026-06-19T23:28:15.6071834Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6071980Z               "line": 259
2026-06-19T23:28:15.6072094Z             },
2026-06-19T23:28:15.6072219Z             {
2026-06-19T23:28:15.6072403Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6072524Z               "line": 269
2026-06-19T23:28:15.6072652Z             },
2026-06-19T23:28:15.6072776Z             {
2026-06-19T23:28:15.6072958Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.6073090Z               "line": 283
2026-06-19T23:28:15.6073219Z             }
2026-06-19T23:28:15.6073333Z           ]
2026-06-19T23:28:15.6073468Z         }
2026-06-19T23:28:15.6073600Z       }
2026-06-19T23:28:15.6073715Z     },
2026-06-19T23:28:15.6073849Z     {
2026-06-19T23:28:15.6074011Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-19T23:28:15.6074262Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-19T23:28:15.6074405Z       "requiredStages": [],
2026-06-19T23:28:15.6074537Z       "stages": {
2026-06-19T23:28:15.6074669Z         "doc": {
2026-06-19T23:28:15.6074804Z           "complete": false,
2026-06-19T23:28:15.6074937Z           "evidence": []
2026-06-19T23:28:15.6075062Z         },
2026-06-19T23:28:15.6075186Z         "impl": {
2026-06-19T23:28:15.6075328Z           "complete": false,
2026-06-19T23:28:15.6075467Z           "evidence": []
2026-06-19T23:28:15.6075590Z         },
2026-06-19T23:28:15.6075715Z         "int": {
2026-06-19T23:28:15.6075857Z           "complete": false,
2026-06-19T23:28:15.6075992Z           "evidence": []
2026-06-19T23:28:15.6076129Z         },
2026-06-19T23:28:15.6076267Z         "unit": {
2026-06-19T23:28:15.6076401Z           "complete": false,
2026-06-19T23:28:15.6076549Z           "evidence": []
2026-06-19T23:28:15.6076674Z         }
2026-06-19T23:28:15.6076801Z       }
2026-06-19T23:28:15.6076922Z     },
2026-06-19T23:28:15.6077050Z     {
2026-06-19T23:28:15.6077239Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-19T23:28:15.6078203Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-19T23:28:15.6078351Z       "requiredStages": [
2026-06-19T23:28:15.6078474Z         "impl",
2026-06-19T23:28:15.6078604Z         "unit"
2026-06-19T23:28:15.6078717Z       ],
2026-06-19T23:28:15.6078852Z       "stages": {
2026-06-19T23:28:15.6079084Z         "doc": {
2026-06-19T23:28:15.6079224Z           "complete": false,
2026-06-19T23:28:15.6079375Z           "evidence": []
2026-06-19T23:28:15.6079498Z         },
2026-06-19T23:28:15.6079631Z         "impl": {
2026-06-19T23:28:15.6079777Z           "complete": true,
2026-06-19T23:28:15.6079902Z           "evidence": [
2026-06-19T23:28:15.6080026Z             {
2026-06-19T23:28:15.6080197Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6080464Z               "line": 26
2026-06-19T23:28:15.6080584Z             },
2026-06-19T23:28:15.6080716Z             {
2026-06-19T23:28:15.6080898Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6081036Z               "line": 95
2026-06-19T23:28:15.6081165Z             },
2026-06-19T23:28:15.6081294Z             {
2026-06-19T23:28:15.6081466Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6081594Z               "line": 166
2026-06-19T23:28:15.6081723Z             },
2026-06-19T23:28:15.6081857Z             {
2026-06-19T23:28:15.6082014Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6082247Z               "line": 19
2026-06-19T23:28:15.6082370Z             },
2026-06-19T23:28:15.6082503Z             {
2026-06-19T23:28:15.6082658Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6082798Z               "line": 50
2026-06-19T23:28:15.6082935Z             },
2026-06-19T23:28:15.6083055Z             {
2026-06-19T23:28:15.6083221Z               "path": "crates/spt-live/src/turn.rs",
2026-06-19T23:28:15.6083351Z               "line": 18
2026-06-19T23:28:15.6083470Z             },
2026-06-19T23:28:15.6083597Z             {
2026-06-19T23:28:15.6083752Z               "path": "crates/spt-live/src/turn.rs",
2026-06-19T23:28:15.6083889Z               "line": 71
2026-06-19T23:28:15.6084014Z             },
2026-06-19T23:28:15.6084136Z             {
2026-06-19T23:28:15.6084305Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.6084438Z               "line": 87
2026-06-19T23:28:15.6084566Z             }
2026-06-19T23:28:15.6084691Z           ]
2026-06-19T23:28:15.6084818Z         },
2026-06-19T23:28:15.6084942Z         "int": {
2026-06-19T23:28:15.6085084Z           "complete": false,
2026-06-19T23:28:15.6085216Z           "evidence": []
2026-06-19T23:28:15.6085345Z         },
2026-06-19T23:28:15.6085478Z         "unit": {
2026-06-19T23:28:15.6085622Z           "complete": true,
2026-06-19T23:28:15.6085765Z           "evidence": [
2026-06-19T23:28:15.6085888Z             {
2026-06-19T23:28:15.6086070Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6086203Z               "line": 289
2026-06-19T23:28:15.6086337Z             },
2026-06-19T23:28:15.6086475Z             {
2026-06-19T23:28:15.6086652Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6086789Z               "line": 314
2026-06-19T23:28:15.6086919Z             },
2026-06-19T23:28:15.6087047Z             {
2026-06-19T23:28:15.6087210Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6087356Z               "line": 350
2026-06-19T23:28:15.6087492Z             },
2026-06-19T23:28:15.6087615Z             {
2026-06-19T23:28:15.6087784Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6087919Z               "line": 418
2026-06-19T23:28:15.6088047Z             },
2026-06-19T23:28:15.6088176Z             {
2026-06-19T23:28:15.6088342Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6088477Z               "line": 429
2026-06-19T23:28:15.6088601Z             },
2026-06-19T23:28:15.6088733Z             {
2026-06-19T23:28:15.6088891Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6089097Z               "line": 460
2026-06-19T23:28:15.6089225Z             },
2026-06-19T23:28:15.6089354Z             {
2026-06-19T23:28:15.6089516Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.6089649Z               "line": 471
2026-06-19T23:28:15.6089780Z             },
2026-06-19T23:28:15.6089911Z             {
2026-06-19T23:28:15.6090082Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6090214Z               "line": 77
2026-06-19T23:28:15.6090342Z             },
2026-06-19T23:28:15.6090467Z             {
2026-06-19T23:28:15.6090633Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6090871Z               "line": 97
2026-06-19T23:28:15.6090995Z             },
2026-06-19T23:28:15.6091129Z             {
2026-06-19T23:28:15.6091295Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6091425Z               "line": 112
2026-06-19T23:28:15.6091539Z             },
2026-06-19T23:28:15.6091658Z             {
2026-06-19T23:28:15.6091830Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6091959Z               "line": 123
2026-06-19T23:28:15.6092088Z             },
2026-06-19T23:28:15.6092216Z             {
2026-06-19T23:28:15.6092374Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6092632Z               "line": 130
2026-06-19T23:28:15.6092760Z             },
2026-06-19T23:28:15.6092892Z             {
2026-06-19T23:28:15.6093063Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-19T23:28:15.6093199Z               "line": 145
2026-06-19T23:28:15.6093324Z             },
2026-06-19T23:28:15.6093462Z             {
2026-06-19T23:28:15.6093620Z               "path": "crates/spt-live/src/turn.rs",
2026-06-19T23:28:15.6093753Z               "line": 115
2026-06-19T23:28:15.6093877Z             },
2026-06-19T23:28:15.6094006Z             {
2026-06-19T23:28:15.6094162Z               "path": "crates/spt-live/src/turn.rs",
2026-06-19T23:28:15.6094297Z               "line": 130
2026-06-19T23:28:15.6094421Z             },
2026-06-19T23:28:15.6094550Z             {
2026-06-19T23:28:15.6094715Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.6094850Z               "line": 428
2026-06-19T23:28:15.6094965Z             }
2026-06-19T23:28:15.6095098Z           ]
2026-06-19T23:28:15.6095227Z         }
2026-06-19T23:28:15.6095345Z       }
2026-06-19T23:28:15.6095473Z     },
2026-06-19T23:28:15.6095597Z     {
2026-06-19T23:28:15.6095752Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-19T23:28:15.6096677Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-19T23:28:15.6096840Z       "requiredStages": [
2026-06-19T23:28:15.6096969Z         "doc",
2026-06-19T23:28:15.6097102Z         "impl",
2026-06-19T23:28:15.6097235Z         "unit"
2026-06-19T23:28:15.6097364Z       ],
2026-06-19T23:28:15.6097499Z       "stages": {
2026-06-19T23:28:15.6097626Z         "doc": {
2026-06-19T23:28:15.6097770Z           "complete": true,
2026-06-19T23:28:15.6097893Z           "evidence": [
2026-06-19T23:28:15.6098027Z             {
2026-06-19T23:28:15.6098199Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6098326Z               "line": 374
2026-06-19T23:28:15.6098456Z             }
2026-06-19T23:28:15.6098583Z           ]
2026-06-19T23:28:15.6098703Z         },
2026-06-19T23:28:15.6098842Z         "impl": {
2026-06-19T23:28:15.6099037Z           "complete": true,
2026-06-19T23:28:15.6099185Z           "evidence": [
2026-06-19T23:28:15.6099303Z             {
2026-06-19T23:28:15.6099480Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6099614Z               "line": 200
2026-06-19T23:28:15.6099743Z             },
2026-06-19T23:28:15.6099880Z             {
2026-06-19T23:28:15.6100049Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6100181Z               "line": 304
2026-06-19T23:28:15.6100301Z             },
2026-06-19T23:28:15.6100433Z             {
2026-06-19T23:28:15.6100589Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6100737Z               "line": 516
2026-06-19T23:28:15.6100869Z             },
2026-06-19T23:28:15.6100989Z             {
2026-06-19T23:28:15.6101150Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6101274Z               "line": 531
2026-06-19T23:28:15.6101408Z             },
2026-06-19T23:28:15.6101651Z             {
2026-06-19T23:28:15.6101808Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6101953Z               "line": 1158
2026-06-19T23:28:15.6102080Z             },
2026-06-19T23:28:15.6102204Z             {
2026-06-19T23:28:15.6102381Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6102519Z               "line": 443
2026-06-19T23:28:15.6102643Z             },
2026-06-19T23:28:15.6102771Z             {
2026-06-19T23:28:15.6102944Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6103077Z               "line": 590
2026-06-19T23:28:15.6103207Z             },
2026-06-19T23:28:15.6103433Z             {
2026-06-19T23:28:15.6103609Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6103750Z               "line": 731
2026-06-19T23:28:15.6103875Z             }
2026-06-19T23:28:15.6104003Z           ]
2026-06-19T23:28:15.6104122Z         },
2026-06-19T23:28:15.6104247Z         "int": {
2026-06-19T23:28:15.6104398Z           "complete": false,
2026-06-19T23:28:15.6104538Z           "evidence": []
2026-06-19T23:28:15.6104666Z         },
2026-06-19T23:28:15.6104800Z         "unit": {
2026-06-19T23:28:15.6104942Z           "complete": true,
2026-06-19T23:28:15.6105066Z           "evidence": [
2026-06-19T23:28:15.6105201Z             {
2026-06-19T23:28:15.6105367Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6105496Z               "line": 1155
2026-06-19T23:28:15.6105629Z             },
2026-06-19T23:28:15.6105754Z             {
2026-06-19T23:28:15.6105943Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-19T23:28:15.6106086Z               "line": 30
2026-06-19T23:28:15.6106227Z             }
2026-06-19T23:28:15.6106355Z           ]
2026-06-19T23:28:15.6106489Z         }
2026-06-19T23:28:15.6106626Z       }
2026-06-19T23:28:15.6106752Z     },
2026-06-19T23:28:15.6106885Z     {
2026-06-19T23:28:15.6107047Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-19T23:28:15.6110604Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-19T23:28:15.6110774Z       "requiredStages": [
2026-06-19T23:28:15.6110909Z         "impl",
2026-06-19T23:28:15.6111036Z         "unit",
2026-06-19T23:28:15.6111169Z         "int"
2026-06-19T23:28:15.6111292Z       ],
2026-06-19T23:28:15.6111420Z       "stages": {
2026-06-19T23:28:15.6111558Z         "doc": {
2026-06-19T23:28:15.6111691Z           "complete": false,
2026-06-19T23:28:15.6111820Z           "evidence": []
2026-06-19T23:28:15.6111940Z         },
2026-06-19T23:28:15.6112077Z         "impl": {
2026-06-19T23:28:15.6112203Z           "complete": true,
2026-06-19T23:28:15.6112344Z           "evidence": [
2026-06-19T23:28:15.6112474Z             {
2026-06-19T23:28:15.6112626Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6112759Z               "line": 429
2026-06-19T23:28:15.6112884Z             },
2026-06-19T23:28:15.6113012Z             {
2026-06-19T23:28:15.6113166Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6113428Z               "line": 593
2026-06-19T23:28:15.6113560Z             }
2026-06-19T23:28:15.6113685Z           ]
2026-06-19T23:28:15.6113819Z         },
2026-06-19T23:28:15.6113946Z         "int": {
2026-06-19T23:28:15.6114084Z           "complete": true,
2026-06-19T23:28:15.6114215Z           "evidence": [
2026-06-19T23:28:15.6114338Z             {
2026-06-19T23:28:15.6114526Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-19T23:28:15.6114663Z               "line": 402
2026-06-19T23:28:15.6114793Z             }
2026-06-19T23:28:15.6114916Z           ]
2026-06-19T23:28:15.6115051Z         },
2026-06-19T23:28:15.6115317Z         "unit": {
2026-06-19T23:28:15.6115455Z           "complete": true,
2026-06-19T23:28:15.6115579Z           "evidence": [
2026-06-19T23:28:15.6115709Z             {
2026-06-19T23:28:15.6115855Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6115980Z               "line": 769
2026-06-19T23:28:15.6116113Z             },
2026-06-19T23:28:15.6116237Z             {
2026-06-19T23:28:15.6116385Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6116517Z               "line": 793
2026-06-19T23:28:15.6116646Z             }
2026-06-19T23:28:15.6116773Z           ]
2026-06-19T23:28:15.6116901Z         }
2026-06-19T23:28:15.6117031Z       }
2026-06-19T23:28:15.6117159Z     },
2026-06-19T23:28:15.6117288Z     {
2026-06-19T23:28:15.6117464Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-19T23:28:15.6121401Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-19T23:28:15.6121573Z       "requiredStages": [
2026-06-19T23:28:15.6121695Z         "impl",
2026-06-19T23:28:15.6121825Z         "unit",
2026-06-19T23:28:15.6121951Z         "int"
2026-06-19T23:28:15.6122080Z       ],
2026-06-19T23:28:15.6122214Z       "stages": {
2026-06-19T23:28:15.6122328Z         "doc": {
2026-06-19T23:28:15.6122471Z           "complete": false,
2026-06-19T23:28:15.6122604Z           "evidence": []
2026-06-19T23:28:15.6122739Z         },
2026-06-19T23:28:15.6122853Z         "impl": {
2026-06-19T23:28:15.6122990Z           "complete": true,
2026-06-19T23:28:15.6123124Z           "evidence": [
2026-06-19T23:28:15.6123252Z             {
2026-06-19T23:28:15.6123406Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6123548Z               "line": 1389
2026-06-19T23:28:15.6123678Z             },
2026-06-19T23:28:15.6123801Z             {
2026-06-19T23:28:15.6123964Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6124092Z               "line": 1413
2026-06-19T23:28:15.6124216Z             }
2026-06-19T23:28:15.6124458Z           ]
2026-06-19T23:28:15.6124581Z         },
2026-06-19T23:28:15.6124711Z         "int": {
2026-06-19T23:28:15.6124851Z           "complete": true,
2026-06-19T23:28:15.6124981Z           "evidence": [
2026-06-19T23:28:15.6125114Z             {
2026-06-19T23:28:15.6125296Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-19T23:28:15.6125443Z               "line": 329
2026-06-19T23:28:15.6125562Z             }
2026-06-19T23:28:15.6125686Z           ]
2026-06-19T23:28:15.6125810Z         },
2026-06-19T23:28:15.6125945Z         "unit": {
2026-06-19T23:28:15.6126087Z           "complete": true,
2026-06-19T23:28:15.6126221Z           "evidence": [
2026-06-19T23:28:15.6126454Z             {
2026-06-19T23:28:15.6126612Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6126744Z               "line": 8141
2026-06-19T23:28:15.6126870Z             }
2026-06-19T23:28:15.6126997Z           ]
2026-06-19T23:28:15.6127129Z         }
2026-06-19T23:28:15.6127254Z       }
2026-06-19T23:28:15.6127399Z     },
2026-06-19T23:28:15.6127528Z     {
2026-06-19T23:28:15.6127690Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-19T23:28:15.6131705Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-19T23:28:15.6137585Z       "requiredStages": [
2026-06-19T23:28:15.6137756Z         "impl",
2026-06-19T23:28:15.6137888Z         "unit"
2026-06-19T23:28:15.6138016Z       ],
2026-06-19T23:28:15.6138170Z       "stages": {
2026-06-19T23:28:15.6138312Z         "doc": {
2026-06-19T23:28:15.6138456Z           "complete": false,
2026-06-19T23:28:15.6138608Z           "evidence": []
2026-06-19T23:28:15.6138728Z         },
2026-06-19T23:28:15.6138856Z         "impl": {
2026-06-19T23:28:15.6139081Z           "complete": true,
2026-06-19T23:28:15.6139228Z           "evidence": [
2026-06-19T23:28:15.6139352Z             {
2026-06-19T23:28:15.6139509Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6139643Z               "line": 616
2026-06-19T23:28:15.6139771Z             }
2026-06-19T23:28:15.6139900Z           ]
2026-06-19T23:28:15.6140030Z         },
2026-06-19T23:28:15.6140162Z         "int": {
2026-06-19T23:28:15.6140302Z           "complete": false,
2026-06-19T23:28:15.6140434Z           "evidence": []
2026-06-19T23:28:15.6140556Z         },
2026-06-19T23:28:15.6140681Z         "unit": {
2026-06-19T23:28:15.6140820Z           "complete": true,
2026-06-19T23:28:15.6140958Z           "evidence": [
2026-06-19T23:28:15.6141092Z             {
2026-06-19T23:28:15.6141244Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6141383Z               "line": 809
2026-06-19T23:28:15.6141510Z             }
2026-06-19T23:28:15.6141635Z           ]
2026-06-19T23:28:15.6141749Z         }
2026-06-19T23:28:15.6142035Z       }
2026-06-19T23:28:15.6142168Z     },
2026-06-19T23:28:15.6142289Z     {
2026-06-19T23:28:15.6142460Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-19T23:28:15.6147221Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-19T23:28:15.6147555Z       "requiredStages": [
2026-06-19T23:28:15.6147689Z         "impl",
2026-06-19T23:28:15.6147812Z         "unit"
2026-06-19T23:28:15.6147937Z       ],
2026-06-19T23:28:15.6148062Z       "stages": {
2026-06-19T23:28:15.6148188Z         "doc": {
2026-06-19T23:28:15.6148336Z           "complete": false,
2026-06-19T23:28:15.6148467Z           "evidence": []
2026-06-19T23:28:15.6148595Z         },
2026-06-19T23:28:15.6148725Z         "impl": {
2026-06-19T23:28:15.6148863Z           "complete": true,
2026-06-19T23:28:15.6149068Z           "evidence": [
2026-06-19T23:28:15.6149196Z             {
2026-06-19T23:28:15.6149359Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6149492Z               "line": 119
2026-06-19T23:28:15.6149622Z             }
2026-06-19T23:28:15.6149740Z           ]
2026-06-19T23:28:15.6149873Z         },
2026-06-19T23:28:15.6150007Z         "int": {
2026-06-19T23:28:15.6150136Z           "complete": false,
2026-06-19T23:28:15.6150285Z           "evidence": []
2026-06-19T23:28:15.6150412Z         },
2026-06-19T23:28:15.6150542Z         "unit": {
2026-06-19T23:28:15.6150679Z           "complete": true,
2026-06-19T23:28:15.6150818Z           "evidence": [
2026-06-19T23:28:15.6150947Z             {
2026-06-19T23:28:15.6151121Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6151271Z               "line": 791
2026-06-19T23:28:15.6151394Z             },
2026-06-19T23:28:15.6151528Z             {
2026-06-19T23:28:15.6151680Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6151809Z               "line": 922
2026-06-19T23:28:15.6151938Z             },
2026-06-19T23:28:15.6152061Z             {
2026-06-19T23:28:15.6152210Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6152333Z               "line": 924
2026-06-19T23:28:15.6152462Z             }
2026-06-19T23:28:15.6152581Z           ]
2026-06-19T23:28:15.6152705Z         }
2026-06-19T23:28:15.6152835Z       }
2026-06-19T23:28:15.6152967Z     },
2026-06-19T23:28:15.6153092Z     {
2026-06-19T23:28:15.6153248Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-19T23:28:15.6153575Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-19T23:28:15.6153712Z       "requiredStages": [
2026-06-19T23:28:15.6153956Z         "impl",
2026-06-19T23:28:15.6154085Z         "unit"
2026-06-19T23:28:15.6154209Z       ],
2026-06-19T23:28:15.6154341Z       "stages": {
2026-06-19T23:28:15.6154462Z         "doc": {
2026-06-19T23:28:15.6154609Z           "complete": true,
2026-06-19T23:28:15.6154738Z           "evidence": [
2026-06-19T23:28:15.6154867Z             {
2026-06-19T23:28:15.6155029Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6155162Z               "line": 139
2026-06-19T23:28:15.6155281Z             }
2026-06-19T23:28:15.6155406Z           ]
2026-06-19T23:28:15.6155539Z         },
2026-06-19T23:28:15.6155664Z         "impl": {
2026-06-19T23:28:15.6155915Z           "complete": true,
2026-06-19T23:28:15.6156050Z           "evidence": [
2026-06-19T23:28:15.6156177Z             {
2026-06-19T23:28:15.6156343Z               "path": "crates/spt-store/src/db.rs",
2026-06-19T23:28:15.6156475Z               "line": 29
2026-06-19T23:28:15.6156608Z             },
2026-06-19T23:28:15.6156742Z             {
2026-06-19T23:28:15.6156913Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.6157052Z               "line": 101
2026-06-19T23:28:15.6157175Z             },
2026-06-19T23:28:15.6157305Z             {
2026-06-19T23:28:15.6157480Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6157610Z               "line": 30
2026-06-19T23:28:15.6157733Z             },
2026-06-19T23:28:15.6157858Z             {
2026-06-19T23:28:15.6158020Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.6158153Z               "line": 48
2026-06-19T23:28:15.6158283Z             }
2026-06-19T23:28:15.6158415Z           ]
2026-06-19T23:28:15.6158546Z         },
2026-06-19T23:28:15.6158673Z         "int": {
2026-06-19T23:28:15.6158805Z           "complete": false,
2026-06-19T23:28:15.6159004Z           "evidence": []
2026-06-19T23:28:15.6159127Z         },
2026-06-19T23:28:15.6159261Z         "unit": {
2026-06-19T23:28:15.6159399Z           "complete": true,
2026-06-19T23:28:15.6159543Z           "evidence": [
2026-06-19T23:28:15.6159667Z             {
2026-06-19T23:28:15.6159843Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6159986Z               "line": 162
2026-06-19T23:28:15.6160109Z             }
2026-06-19T23:28:15.6160243Z           ]
2026-06-19T23:28:15.6160357Z         }
2026-06-19T23:28:15.6160492Z       }
2026-06-19T23:28:15.6160615Z     },
2026-06-19T23:28:15.6160739Z     {
2026-06-19T23:28:15.6160910Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-19T23:28:15.6161349Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-19T23:28:15.6161503Z       "requiredStages": [
2026-06-19T23:28:15.6161630Z         "doc",
2026-06-19T23:28:15.6161763Z         "impl",
2026-06-19T23:28:15.6161883Z         "unit"
2026-06-19T23:28:15.6162010Z       ],
2026-06-19T23:28:15.6162150Z       "stages": {
2026-06-19T23:28:15.6162278Z         "doc": {
2026-06-19T23:28:15.6162436Z           "complete": true,
2026-06-19T23:28:15.6162569Z           "evidence": [
2026-06-19T23:28:15.6162703Z             {
2026-06-19T23:28:15.6162855Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6162988Z               "line": 151
2026-06-19T23:28:15.6163123Z             }
2026-06-19T23:28:15.6163246Z           ]
2026-06-19T23:28:15.6163381Z         },
2026-06-19T23:28:15.6163508Z         "impl": {
2026-06-19T23:28:15.6163642Z           "complete": true,
2026-06-19T23:28:15.6163785Z           "evidence": [
2026-06-19T23:28:15.6163898Z             {
2026-06-19T23:28:15.6164065Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6164206Z               "line": 22
2026-06-19T23:28:15.6164335Z             }
2026-06-19T23:28:15.6164450Z           ]
2026-06-19T23:28:15.6164577Z         },
2026-06-19T23:28:15.6164712Z         "int": {
2026-06-19T23:28:15.6164845Z           "complete": false,
2026-06-19T23:28:15.6164979Z           "evidence": []
2026-06-19T23:28:15.6165236Z         },
2026-06-19T23:28:15.6165365Z         "unit": {
2026-06-19T23:28:15.6165503Z           "complete": true,
2026-06-19T23:28:15.6165646Z           "evidence": [
2026-06-19T23:28:15.6165779Z             {
2026-06-19T23:28:15.6165952Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6166094Z               "line": 298
2026-06-19T23:28:15.6166214Z             }
2026-06-19T23:28:15.6166347Z           ]
2026-06-19T23:28:15.6166471Z         }
2026-06-19T23:28:15.6166601Z       }
2026-06-19T23:28:15.6166718Z     },
2026-06-19T23:28:15.6166846Z     {
2026-06-19T23:28:15.6167021Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-19T23:28:15.6167636Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-19T23:28:15.6167788Z       "requiredStages": [
2026-06-19T23:28:15.6167913Z         "impl",
2026-06-19T23:28:15.6168036Z         "unit"
2026-06-19T23:28:15.6168171Z       ],
2026-06-19T23:28:15.6168289Z       "stages": {
2026-06-19T23:28:15.6168427Z         "doc": {
2026-06-19T23:28:15.6168562Z           "complete": true,
2026-06-19T23:28:15.6168699Z           "evidence": [
2026-06-19T23:28:15.6168819Z             {
2026-06-19T23:28:15.6169062Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6169196Z               "line": 145
2026-06-19T23:28:15.6169323Z             }
2026-06-19T23:28:15.6169451Z           ]
2026-06-19T23:28:15.6169569Z         },
2026-06-19T23:28:15.6169692Z         "impl": {
2026-06-19T23:28:15.6169822Z           "complete": true,
2026-06-19T23:28:15.6169949Z           "evidence": [
2026-06-19T23:28:15.6170083Z             {
2026-06-19T23:28:15.6170269Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-19T23:28:15.6170403Z               "line": 160
2026-06-19T23:28:15.6170527Z             },
2026-06-19T23:28:15.6170650Z             {
2026-06-19T23:28:15.6170831Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6170984Z               "line": 200
2026-06-19T23:28:15.6171114Z             },
2026-06-19T23:28:15.6171237Z             {
2026-06-19T23:28:15.6171415Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6171547Z               "line": 298
2026-06-19T23:28:15.6171672Z             },
2026-06-19T23:28:15.6171799Z             {
2026-06-19T23:28:15.6171978Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-19T23:28:15.6172105Z               "line": 20
2026-06-19T23:28:15.6172233Z             }
2026-06-19T23:28:15.6172362Z           ]
2026-06-19T23:28:15.6172480Z         },
2026-06-19T23:28:15.6172614Z         "int": {
2026-06-19T23:28:15.6172748Z           "complete": false,
2026-06-19T23:28:15.6172876Z           "evidence": []
2026-06-19T23:28:15.6173006Z         },
2026-06-19T23:28:15.6173134Z         "unit": {
2026-06-19T23:28:15.6173272Z           "complete": true,
2026-06-19T23:28:15.6173406Z           "evidence": [
2026-06-19T23:28:15.6173543Z             {
2026-06-19T23:28:15.6173720Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6173858Z               "line": 937
2026-06-19T23:28:15.6173993Z             },
2026-06-19T23:28:15.6174116Z             {
2026-06-19T23:28:15.6174294Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-19T23:28:15.6174421Z               "line": 88
2026-06-19T23:28:15.6174553Z             },
2026-06-19T23:28:15.6174676Z             {
2026-06-19T23:28:15.6174856Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6174991Z               "line": 851
2026-06-19T23:28:15.6175123Z             },
2026-06-19T23:28:15.6175258Z             {
2026-06-19T23:28:15.6175433Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6175568Z               "line": 870
2026-06-19T23:28:15.6175686Z             },
2026-06-19T23:28:15.6175820Z             {
2026-06-19T23:28:15.6176001Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.6176249Z               "line": 279
2026-06-19T23:28:15.6176383Z             },
2026-06-19T23:28:15.6176508Z             {
2026-06-19T23:28:15.6176683Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-19T23:28:15.6176823Z               "line": 82
2026-06-19T23:28:15.6176945Z             },
2026-06-19T23:28:15.6177075Z             {
2026-06-19T23:28:15.6177236Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-19T23:28:15.6177378Z               "line": 99
2026-06-19T23:28:15.6177506Z             },
2026-06-19T23:28:15.6177633Z             {
2026-06-19T23:28:15.6177805Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-19T23:28:15.6178043Z               "line": 119
2026-06-19T23:28:15.6178177Z             }
2026-06-19T23:28:15.6178300Z           ]
2026-06-19T23:28:15.6178425Z         }
2026-06-19T23:28:15.6178549Z       }
2026-06-19T23:28:15.6178673Z     },
2026-06-19T23:28:15.6178807Z     {
2026-06-19T23:28:15.6179055Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-19T23:28:15.6180444Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-19T23:28:15.6180586Z       "requiredStages": [
2026-06-19T23:28:15.6180716Z         "doc",
2026-06-19T23:28:15.6180843Z         "impl",
2026-06-19T23:28:15.6180978Z         "unit"
2026-06-19T23:28:15.6181106Z       ],
2026-06-19T23:28:15.6181239Z       "stages": {
2026-06-19T23:28:15.6181369Z         "doc": {
2026-06-19T23:28:15.6181501Z           "complete": true,
2026-06-19T23:28:15.6181622Z           "evidence": [
2026-06-19T23:28:15.6181750Z             {
2026-06-19T23:28:15.6181913Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6182045Z               "line": 157
2026-06-19T23:28:15.6182164Z             }
2026-06-19T23:28:15.6182290Z           ]
2026-06-19T23:28:15.6182407Z         },
2026-06-19T23:28:15.6182538Z         "impl": {
2026-06-19T23:28:15.6182675Z           "complete": true,
2026-06-19T23:28:15.6182807Z           "evidence": [
2026-06-19T23:28:15.6182927Z             {
2026-06-19T23:28:15.6183112Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-19T23:28:15.6183247Z               "line": 137
2026-06-19T23:28:15.6183365Z             },
2026-06-19T23:28:15.6183489Z             {
2026-06-19T23:28:15.6183680Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6183818Z               "line": 564
2026-06-19T23:28:15.6183952Z             },
2026-06-19T23:28:15.6184070Z             {
2026-06-19T23:28:15.6184257Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6184400Z               "line": 571
2026-06-19T23:28:15.6184530Z             },
2026-06-19T23:28:15.6184652Z             {
2026-06-19T23:28:15.6184821Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6184957Z               "line": 227
2026-06-19T23:28:15.6185080Z             }
2026-06-19T23:28:15.6185213Z           ]
2026-06-19T23:28:15.6185331Z         },
2026-06-19T23:28:15.6185465Z         "int": {
2026-06-19T23:28:15.6185603Z           "complete": false,
2026-06-19T23:28:15.6185741Z           "evidence": []
2026-06-19T23:28:15.6185870Z         },
2026-06-19T23:28:15.6185998Z         "unit": {
2026-06-19T23:28:15.6186147Z           "complete": true,
2026-06-19T23:28:15.6186289Z           "evidence": [
2026-06-19T23:28:15.6186424Z             {
2026-06-19T23:28:15.6186608Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6186748Z               "line": 1622
2026-06-19T23:28:15.6186881Z             },
2026-06-19T23:28:15.6187005Z             {
2026-06-19T23:28:15.6187295Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6187430Z               "line": 1680
2026-06-19T23:28:15.6187563Z             },
2026-06-19T23:28:15.6187693Z             {
2026-06-19T23:28:15.6187862Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6187990Z               "line": 883
2026-06-19T23:28:15.6188118Z             }
2026-06-19T23:28:15.6188250Z           ]
2026-06-19T23:28:15.6188375Z         }
2026-06-19T23:28:15.6188508Z       }
2026-06-19T23:28:15.6188637Z     },
2026-06-19T23:28:15.6188766Z     {
2026-06-19T23:28:15.6189019Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-19T23:28:15.6189371Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-19T23:28:15.6189518Z       "requiredStages": [
2026-06-19T23:28:15.6189648Z         "impl",
2026-06-19T23:28:15.6189776Z         "unit"
2026-06-19T23:28:15.6189891Z       ],
2026-06-19T23:28:15.6190020Z       "stages": {
2026-06-19T23:28:15.6190157Z         "doc": {
2026-06-19T23:28:15.6190302Z           "complete": false,
2026-06-19T23:28:15.6190433Z           "evidence": []
2026-06-19T23:28:15.6190562Z         },
2026-06-19T23:28:15.6190685Z         "impl": {
2026-06-19T23:28:15.6190822Z           "complete": true,
2026-06-19T23:28:15.6190952Z           "evidence": [
2026-06-19T23:28:15.6191070Z             {
2026-06-19T23:28:15.6191233Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6191366Z               "line": 15
2026-06-19T23:28:15.6191484Z             },
2026-06-19T23:28:15.6191614Z             {
2026-06-19T23:28:15.6191795Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6191929Z               "line": 55
2026-06-19T23:28:15.6192057Z             },
2026-06-19T23:28:15.6192187Z             {
2026-06-19T23:28:15.6192362Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6192497Z               "line": 66
2026-06-19T23:28:15.6192629Z             },
2026-06-19T23:28:15.6192749Z             {
2026-06-19T23:28:15.6192915Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6193044Z               "line": 115
2026-06-19T23:28:15.6193174Z             },
2026-06-19T23:28:15.6193300Z             {
2026-06-19T23:28:15.6193472Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6193601Z               "line": 138
2026-06-19T23:28:15.6193734Z             }
2026-06-19T23:28:15.6193858Z           ]
2026-06-19T23:28:15.6193987Z         },
2026-06-19T23:28:15.6194117Z         "int": {
2026-06-19T23:28:15.6194254Z           "complete": false,
2026-06-19T23:28:15.6194402Z           "evidence": []
2026-06-19T23:28:15.6194516Z         },
2026-06-19T23:28:15.6194645Z         "unit": {
2026-06-19T23:28:15.6194784Z           "complete": true,
2026-06-19T23:28:15.6194921Z           "evidence": [
2026-06-19T23:28:15.6195042Z             {
2026-06-19T23:28:15.6195212Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6195352Z               "line": 363
2026-06-19T23:28:15.6195479Z             },
2026-06-19T23:28:15.6195607Z             {
2026-06-19T23:28:15.6195764Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6195905Z               "line": 369
2026-06-19T23:28:15.6196030Z             },
2026-06-19T23:28:15.6196163Z             {
2026-06-19T23:28:15.6196335Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6196468Z               "line": 383
2026-06-19T23:28:15.6196601Z             },
2026-06-19T23:28:15.6196726Z             {
2026-06-19T23:28:15.6196892Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6197026Z               "line": 392
2026-06-19T23:28:15.6197154Z             },
2026-06-19T23:28:15.6197284Z             {
2026-06-19T23:28:15.6197446Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6197585Z               "line": 195
2026-06-19T23:28:15.6197707Z             },
2026-06-19T23:28:15.6197948Z             {
2026-06-19T23:28:15.6198108Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6198238Z               "line": 208
2026-06-19T23:28:15.6198370Z             },
2026-06-19T23:28:15.6198483Z             {
2026-06-19T23:28:15.6198654Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6198786Z               "line": 271
2026-06-19T23:28:15.6198916Z             },
2026-06-19T23:28:15.6199125Z             {
2026-06-19T23:28:15.6199297Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6199444Z               "line": 290
2026-06-19T23:28:15.6199579Z             },
2026-06-19T23:28:15.6199812Z             {
2026-06-19T23:28:15.6199974Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6200117Z               "line": 319
2026-06-19T23:28:15.6200237Z             }
2026-06-19T23:28:15.6200370Z           ]
2026-06-19T23:28:15.6200500Z         }
2026-06-19T23:28:15.6200622Z       }
2026-06-19T23:28:15.6200752Z     },
2026-06-19T23:28:15.6200876Z     {
2026-06-19T23:28:15.6201050Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-19T23:28:15.6201367Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-19T23:28:15.6201512Z       "requiredStages": [
2026-06-19T23:28:15.6201640Z         "impl",
2026-06-19T23:28:15.6201764Z         "unit",
2026-06-19T23:28:15.6201893Z         "int"
2026-06-19T23:28:15.6202021Z       ],
2026-06-19T23:28:15.6202155Z       "stages": {
2026-06-19T23:28:15.6202274Z         "doc": {
2026-06-19T23:28:15.6202422Z           "complete": false,
2026-06-19T23:28:15.6202575Z           "evidence": []
2026-06-19T23:28:15.6202693Z         },
2026-06-19T23:28:15.6202818Z         "impl": {
2026-06-19T23:28:15.6202950Z           "complete": true,
2026-06-19T23:28:15.6203090Z           "evidence": [
2026-06-19T23:28:15.6203213Z             {
2026-06-19T23:28:15.6203386Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6203532Z               "line": 448
2026-06-19T23:28:15.6203658Z             },
2026-06-19T23:28:15.6203790Z             {
2026-06-19T23:28:15.6203960Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6204100Z               "line": 868
2026-06-19T23:28:15.6204227Z             },
2026-06-19T23:28:15.6204357Z             {
2026-06-19T23:28:15.6204518Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6204653Z               "line": 913
2026-06-19T23:28:15.6204782Z             },
2026-06-19T23:28:15.6204910Z             {
2026-06-19T23:28:15.6205081Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.6205219Z               "line": 938
2026-06-19T23:28:15.6205349Z             },
2026-06-19T23:28:15.6205477Z             {
2026-06-19T23:28:15.6205640Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.6205782Z               "line": 1458
2026-06-19T23:28:15.6205907Z             },
2026-06-19T23:28:15.6206035Z             {
2026-06-19T23:28:15.6206205Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.6206343Z               "line": 1691
2026-06-19T23:28:15.6206489Z             },
2026-06-19T23:28:15.6206619Z             {
2026-06-19T23:28:15.6206794Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.6206929Z               "line": 1822
2026-06-19T23:28:15.6207061Z             },
2026-06-19T23:28:15.6207191Z             {
2026-06-19T23:28:15.6207358Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.6207496Z               "line": 1870
2026-06-19T23:28:15.6207629Z             },
2026-06-19T23:28:15.6207762Z             {
2026-06-19T23:28:15.6207925Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.6208058Z               "line": 46
2026-06-19T23:28:15.6208188Z             },
2026-06-19T23:28:15.6208310Z             {
2026-06-19T23:28:15.6208483Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.6208735Z               "line": 200
2026-06-19T23:28:15.6208865Z             },
2026-06-19T23:28:15.6209062Z             {
2026-06-19T23:28:15.6209229Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.6209365Z               "line": 132
2026-06-19T23:28:15.6209490Z             },
2026-06-19T23:28:15.6209619Z             {
2026-06-19T23:28:15.6209782Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.6209914Z               "line": 137
2026-06-19T23:28:15.6210038Z             },
2026-06-19T23:28:15.6210167Z             {
2026-06-19T23:28:15.6210343Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.6210577Z               "line": 183
2026-06-19T23:28:15.6210706Z             }
2026-06-19T23:28:15.6210825Z           ]
2026-06-19T23:28:15.6210944Z         },
2026-06-19T23:28:15.6211074Z         "int": {
2026-06-19T23:28:15.6211216Z           "complete": true,
2026-06-19T23:28:15.6211341Z           "evidence": [
2026-06-19T23:28:15.6211474Z             {
2026-06-19T23:28:15.6211658Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-19T23:28:15.6211786Z               "line": 27
2026-06-19T23:28:15.6211913Z             },
2026-06-19T23:28:15.6212043Z             {
2026-06-19T23:28:15.6212228Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-19T23:28:15.6212367Z               "line": 148
2026-06-19T23:28:15.6212481Z             },
2026-06-19T23:28:15.6212605Z             {
2026-06-19T23:28:15.6212786Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-19T23:28:15.6212925Z               "line": 200
2026-06-19T23:28:15.6213058Z             }
2026-06-19T23:28:15.6213187Z           ]
2026-06-19T23:28:15.6213307Z         },
2026-06-19T23:28:15.6213435Z         "unit": {
2026-06-19T23:28:15.6213569Z           "complete": true,
2026-06-19T23:28:15.6213697Z           "evidence": [
2026-06-19T23:28:15.6213830Z             {
2026-06-19T23:28:15.6213998Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.6214136Z               "line": 366
2026-06-19T23:28:15.6214266Z             },
2026-06-19T23:28:15.6214388Z             {
2026-06-19T23:28:15.6214559Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.6214679Z               "line": 398
2026-06-19T23:28:15.6214816Z             },
2026-06-19T23:28:15.6214946Z             {
2026-06-19T23:28:15.6215111Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-19T23:28:15.6215246Z               "line": 419
2026-06-19T23:28:15.6215370Z             },
2026-06-19T23:28:15.6215498Z             {
2026-06-19T23:28:15.6215670Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.6215804Z               "line": 628
2026-06-19T23:28:15.6215938Z             },
2026-06-19T23:28:15.6216065Z             {
2026-06-19T23:28:15.6216233Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-19T23:28:15.6216362Z               "line": 289
2026-06-19T23:28:15.6216501Z             },
2026-06-19T23:28:15.6216628Z             {
2026-06-19T23:28:15.6216799Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-19T23:28:15.6216941Z               "line": 230
2026-06-19T23:28:15.6217063Z             },
2026-06-19T23:28:15.6217202Z             {
2026-06-19T23:28:15.6217373Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.6217503Z               "line": 526
2026-06-19T23:28:15.6217617Z             },
2026-06-19T23:28:15.6217746Z             {
2026-06-19T23:28:15.6217913Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.6218041Z               "line": 556
2026-06-19T23:28:15.6218180Z             }
2026-06-19T23:28:15.6218308Z           ]
2026-06-19T23:28:15.6218438Z         }
2026-06-19T23:28:15.6218562Z       }
2026-06-19T23:28:15.6218690Z     },
2026-06-19T23:28:15.6218819Z     {
2026-06-19T23:28:15.6219077Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-19T23:28:15.6220898Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-19T23:28:15.6221151Z       "requiredStages": [
2026-06-19T23:28:15.6221276Z         "doc",
2026-06-19T23:28:15.6221499Z         "impl",
2026-06-19T23:28:15.6221630Z         "unit"
2026-06-19T23:28:15.6221761Z       ],
2026-06-19T23:28:15.6221887Z       "stages": {
2026-06-19T23:28:15.6222020Z         "doc": {
2026-06-19T23:28:15.6222156Z           "complete": true,
2026-06-19T23:28:15.6222286Z           "evidence": [
2026-06-19T23:28:15.6222412Z             {
2026-06-19T23:28:15.6222569Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6222717Z               "line": 314
2026-06-19T23:28:15.6222831Z             }
2026-06-19T23:28:15.6222961Z           ]
2026-06-19T23:28:15.6223093Z         },
2026-06-19T23:28:15.6223219Z         "impl": {
2026-06-19T23:28:15.6223366Z           "complete": true,
2026-06-19T23:28:15.6223490Z           "evidence": [
2026-06-19T23:28:15.6223618Z             {
2026-06-19T23:28:15.6223794Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-19T23:28:15.6223933Z               "line": 33
2026-06-19T23:28:15.6224066Z             },
2026-06-19T23:28:15.6224192Z             {
2026-06-19T23:28:15.6224391Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-19T23:28:15.6224516Z               "line": 39
2026-06-19T23:28:15.6224653Z             }
2026-06-19T23:28:15.6224778Z           ]
2026-06-19T23:28:15.6224901Z         },
2026-06-19T23:28:15.6225033Z         "int": {
2026-06-19T23:28:15.6225172Z           "complete": false,
2026-06-19T23:28:15.6225301Z           "evidence": []
2026-06-19T23:28:15.6225429Z         },
2026-06-19T23:28:15.6225563Z         "unit": {
2026-06-19T23:28:15.6225700Z           "complete": true,
2026-06-19T23:28:15.6225835Z           "evidence": [
2026-06-19T23:28:15.6225958Z             {
2026-06-19T23:28:15.6226140Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-19T23:28:15.6226273Z               "line": 95
2026-06-19T23:28:15.6226388Z             }
2026-06-19T23:28:15.6226521Z           ]
2026-06-19T23:28:15.6226649Z         }
2026-06-19T23:28:15.6226784Z       }
2026-06-19T23:28:15.6226917Z     },
2026-06-19T23:28:15.6227047Z     {
2026-06-19T23:28:15.6227207Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-19T23:28:15.6229827Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-19T23:28:15.6229990Z       "requiredStages": [
2026-06-19T23:28:15.6230126Z         "impl",
2026-06-19T23:28:15.6230245Z         "unit"
2026-06-19T23:28:15.6230368Z       ],
2026-06-19T23:28:15.6230505Z       "stages": {
2026-06-19T23:28:15.6230658Z         "doc": {
2026-06-19T23:28:15.6230834Z           "complete": false,
2026-06-19T23:28:15.6230963Z           "evidence": []
2026-06-19T23:28:15.6231212Z         },
2026-06-19T23:28:15.6231345Z         "impl": {
2026-06-19T23:28:15.6231488Z           "complete": true,
2026-06-19T23:28:15.6231616Z           "evidence": [
2026-06-19T23:28:15.6231750Z             {
2026-06-19T23:28:15.6231945Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6232074Z               "line": 488
2026-06-19T23:28:15.6232209Z             }
2026-06-19T23:28:15.6232336Z           ]
2026-06-19T23:28:15.6232462Z         },
2026-06-19T23:28:15.6232580Z         "int": {
2026-06-19T23:28:15.6232726Z           "complete": false,
2026-06-19T23:28:15.6232860Z           "evidence": []
2026-06-19T23:28:15.6233081Z         },
2026-06-19T23:28:15.6233216Z         "unit": {
2026-06-19T23:28:15.6233348Z           "complete": true,
2026-06-19T23:28:15.6233483Z           "evidence": [
2026-06-19T23:28:15.6233597Z             {
2026-06-19T23:28:15.6233788Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6233930Z               "line": 1466
2026-06-19T23:28:15.6234069Z             }
2026-06-19T23:28:15.6234192Z           ]
2026-06-19T23:28:15.6234317Z         }
2026-06-19T23:28:15.6234442Z       }
2026-06-19T23:28:15.6234564Z     },
2026-06-19T23:28:15.6234684Z     {
2026-06-19T23:28:15.6234836Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-19T23:28:15.6237076Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-19T23:28:15.6237249Z       "requiredStages": [
2026-06-19T23:28:15.6237377Z         "unit"
2026-06-19T23:28:15.6237496Z       ],
2026-06-19T23:28:15.6237626Z       "stages": {
2026-06-19T23:28:15.6237753Z         "doc": {
2026-06-19T23:28:15.6237885Z           "complete": false,
2026-06-19T23:28:15.6238009Z           "evidence": []
2026-06-19T23:28:15.6238141Z         },
2026-06-19T23:28:15.6238275Z         "impl": {
2026-06-19T23:28:15.6238413Z           "complete": true,
2026-06-19T23:28:15.6238541Z           "evidence": [
2026-06-19T23:28:15.6238661Z             {
2026-06-19T23:28:15.6238822Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6239033Z               "line": 3492
2026-06-19T23:28:15.6239157Z             },
2026-06-19T23:28:15.6239281Z             {
2026-06-19T23:28:15.6239432Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6239572Z               "line": 3544
2026-06-19T23:28:15.6239705Z             },
2026-06-19T23:28:15.6239830Z             {
2026-06-19T23:28:15.6239986Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6240116Z               "line": 3589
2026-06-19T23:28:15.6240249Z             },
2026-06-19T23:28:15.6240354Z             {
2026-06-19T23:28:15.6240526Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6240658Z               "line": 92
2026-06-19T23:28:15.6240791Z             },
2026-06-19T23:28:15.6240923Z             {
2026-06-19T23:28:15.6241079Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6241214Z               "line": 148
2026-06-19T23:28:15.6241341Z             },
2026-06-19T23:28:15.6241472Z             {
2026-06-19T23:28:15.6241633Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6241777Z               "line": 192
2026-06-19T23:28:15.6241901Z             },
2026-06-19T23:28:15.6242019Z             {
2026-06-19T23:28:15.6242186Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6242425Z               "line": 200
2026-06-19T23:28:15.6247008Z             },
2026-06-19T23:28:15.6247184Z             {
2026-06-19T23:28:15.6247379Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6247533Z               "line": 211
2026-06-19T23:28:15.6247656Z             },
2026-06-19T23:28:15.6247784Z             {
2026-06-19T23:28:15.6247947Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6248085Z               "line": 265
2026-06-19T23:28:15.6248214Z             },
2026-06-19T23:28:15.6248342Z             {
2026-06-19T23:28:15.6248513Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6248835Z               "line": 279
2026-06-19T23:28:15.6249039Z             }
2026-06-19T23:28:15.6249159Z           ]
2026-06-19T23:28:15.6249288Z         },
2026-06-19T23:28:15.6249407Z         "int": {
2026-06-19T23:28:15.6249541Z           "complete": false,
2026-06-19T23:28:15.6249678Z           "evidence": []
2026-06-19T23:28:15.6249813Z         },
2026-06-19T23:28:15.6249941Z         "unit": {
2026-06-19T23:28:15.6250075Z           "complete": true,
2026-06-19T23:28:15.6250208Z           "evidence": [
2026-06-19T23:28:15.6250331Z             {
2026-06-19T23:28:15.6250494Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6250613Z               "line": 419
2026-06-19T23:28:15.6250739Z             },
2026-06-19T23:28:15.6250866Z             {
2026-06-19T23:28:15.6251019Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6251162Z               "line": 470
2026-06-19T23:28:15.6251279Z             },
2026-06-19T23:28:15.6251409Z             {
2026-06-19T23:28:15.6251582Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6251711Z               "line": 499
2026-06-19T23:28:15.6251836Z             },
2026-06-19T23:28:15.6251954Z             {
2026-06-19T23:28:15.6252122Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6252250Z               "line": 526
2026-06-19T23:28:15.6252380Z             }
2026-06-19T23:28:15.6252508Z           ]
2026-06-19T23:28:15.6252627Z         }
2026-06-19T23:28:15.6252756Z       }
2026-06-19T23:28:15.6252879Z     },
2026-06-19T23:28:15.6253005Z     {
2026-06-19T23:28:15.6253161Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-19T23:28:15.6253409Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-19T23:28:15.6253552Z       "requiredStages": [
2026-06-19T23:28:15.6253672Z         "impl",
2026-06-19T23:28:15.6253784Z         "unit"
2026-06-19T23:28:15.6253904Z       ],
2026-06-19T23:28:15.6254041Z       "stages": {
2026-06-19T23:28:15.6254178Z         "doc": {
2026-06-19T23:28:15.6254326Z           "complete": false,
2026-06-19T23:28:15.6254454Z           "evidence": []
2026-06-19T23:28:15.6254579Z         },
2026-06-19T23:28:15.6254713Z         "impl": {
2026-06-19T23:28:15.6254840Z           "complete": true,
2026-06-19T23:28:15.6254970Z           "evidence": [
2026-06-19T23:28:15.6255093Z             {
2026-06-19T23:28:15.6255285Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6255437Z               "line": 62
2026-06-19T23:28:15.6255552Z             },
2026-06-19T23:28:15.6255681Z             {
2026-06-19T23:28:15.6255857Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6255994Z               "line": 71
2026-06-19T23:28:15.6256119Z             },
2026-06-19T23:28:15.6256248Z             {
2026-06-19T23:28:15.6256429Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6256563Z               "line": 80
2026-06-19T23:28:15.6256685Z             },
2026-06-19T23:28:15.6256809Z             {
2026-06-19T23:28:15.6256985Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6257119Z               "line": 88
2026-06-19T23:28:15.6257258Z             },
2026-06-19T23:28:15.6257381Z             {
2026-06-19T23:28:15.6257563Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6257868Z               "line": 33
2026-06-19T23:28:15.6257991Z             },
2026-06-19T23:28:15.6258122Z             {
2026-06-19T23:28:15.6258297Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6258432Z               "line": 65
2026-06-19T23:28:15.6258563Z             },
2026-06-19T23:28:15.6258683Z             {
2026-06-19T23:28:15.6258849Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6259054Z               "line": 74
2026-06-19T23:28:15.6259185Z             },
2026-06-19T23:28:15.6259313Z             {
2026-06-19T23:28:15.6259472Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6259720Z               "line": 93
2026-06-19T23:28:15.6259848Z             },
2026-06-19T23:28:15.6259972Z             {
2026-06-19T23:28:15.6260158Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6260296Z               "line": 102
2026-06-19T23:28:15.6260420Z             },
2026-06-19T23:28:15.6260549Z             {
2026-06-19T23:28:15.6260716Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6260844Z               "line": 111
2026-06-19T23:28:15.6260975Z             },
2026-06-19T23:28:15.6261102Z             {
2026-06-19T23:28:15.6261270Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6261397Z               "line": 122
2026-06-19T23:28:15.6261521Z             },
2026-06-19T23:28:15.6261651Z             {
2026-06-19T23:28:15.6261806Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6261936Z               "line": 140
2026-06-19T23:28:15.6262057Z             },
2026-06-19T23:28:15.6262200Z             {
2026-06-19T23:28:15.6262368Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6262495Z               "line": 149
2026-06-19T23:28:15.6262625Z             },
2026-06-19T23:28:15.6262743Z             {
2026-06-19T23:28:15.6262902Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6263035Z               "line": 158
2026-06-19T23:28:15.6263163Z             },
2026-06-19T23:28:15.6263292Z             {
2026-06-19T23:28:15.6263449Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6263583Z               "line": 169
2026-06-19T23:28:15.6263707Z             },
2026-06-19T23:28:15.6263837Z             {
2026-06-19T23:28:15.6263988Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6264127Z               "line": 177
2026-06-19T23:28:15.6264251Z             },
2026-06-19T23:28:15.6264378Z             {
2026-06-19T23:28:15.6264530Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6264671Z               "line": 186
2026-06-19T23:28:15.6264800Z             },
2026-06-19T23:28:15.6264925Z             {
2026-06-19T23:28:15.6265091Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6265220Z               "line": 195
2026-06-19T23:28:15.6265348Z             },
2026-06-19T23:28:15.6265468Z             {
2026-06-19T23:28:15.6265634Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6265773Z               "line": 204
2026-06-19T23:28:15.6265892Z             },
2026-06-19T23:28:15.6266026Z             {
2026-06-19T23:28:15.6266188Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6266340Z               "line": 216
2026-06-19T23:28:15.6266475Z             },
2026-06-19T23:28:15.6266602Z             {
2026-06-19T23:28:15.6266771Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6266913Z               "line": 223
2026-06-19T23:28:15.6267038Z             },
2026-06-19T23:28:15.6267170Z             {
2026-06-19T23:28:15.6267336Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6267475Z               "line": 232
2026-06-19T23:28:15.6267598Z             },
2026-06-19T23:28:15.6267723Z             {
2026-06-19T23:28:15.6267884Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6268128Z               "line": 239
2026-06-19T23:28:15.6268261Z             },
2026-06-19T23:28:15.6268386Z             {
2026-06-19T23:28:15.6268542Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6268672Z               "line": 306
2026-06-19T23:28:15.6268809Z             },
2026-06-19T23:28:15.6269029Z             {
2026-06-19T23:28:15.6269181Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6269311Z               "line": 318
2026-06-19T23:28:15.6269424Z             },
2026-06-19T23:28:15.6269542Z             {
2026-06-19T23:28:15.6269694Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6269941Z               "line": 405
2026-06-19T23:28:15.6270069Z             }
2026-06-19T23:28:15.6270193Z           ]
2026-06-19T23:28:15.6270328Z         },
2026-06-19T23:28:15.6270455Z         "int": {
2026-06-19T23:28:15.6270604Z           "complete": false,
2026-06-19T23:28:15.6270732Z           "evidence": []
2026-06-19T23:28:15.6270871Z         },
2026-06-19T23:28:15.6270995Z         "unit": {
2026-06-19T23:28:15.6271123Z           "complete": true,
2026-06-19T23:28:15.6271257Z           "evidence": [
2026-06-19T23:28:15.6271385Z             {
2026-06-19T23:28:15.6271554Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6271686Z               "line": 487
2026-06-19T23:28:15.6271820Z             },
2026-06-19T23:28:15.6271939Z             {
2026-06-19T23:28:15.6272096Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6272226Z               "line": 528
2026-06-19T23:28:15.6272353Z             },
2026-06-19T23:28:15.6272481Z             {
2026-06-19T23:28:15.6272651Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6272784Z               "line": 541
2026-06-19T23:28:15.6272918Z             },
2026-06-19T23:28:15.6273045Z             {
2026-06-19T23:28:15.6273209Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6273346Z               "line": 627
2026-06-19T23:28:15.6273476Z             }
2026-06-19T23:28:15.6273590Z           ]
2026-06-19T23:28:15.6273714Z         }
2026-06-19T23:28:15.6273843Z       }
2026-06-19T23:28:15.6273967Z     },
2026-06-19T23:28:15.6274092Z     {
2026-06-19T23:28:15.6274238Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-19T23:28:15.6274492Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-19T23:28:15.6274634Z       "requiredStages": [
2026-06-19T23:28:15.6274764Z         "impl",
2026-06-19T23:28:15.6274891Z         "unit"
2026-06-19T23:28:15.6275014Z       ],
2026-06-19T23:28:15.6275147Z       "stages": {
2026-06-19T23:28:15.6275279Z         "doc": {
2026-06-19T23:28:15.6275428Z           "complete": false,
2026-06-19T23:28:15.6275556Z           "evidence": []
2026-06-19T23:28:15.6275675Z         },
2026-06-19T23:28:15.6275809Z         "impl": {
2026-06-19T23:28:15.6275932Z           "complete": true,
2026-06-19T23:28:15.6276071Z           "evidence": [
2026-06-19T23:28:15.6276195Z             {
2026-06-19T23:28:15.6276372Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.6276500Z               "line": 173
2026-06-19T23:28:15.6276634Z             },
2026-06-19T23:28:15.6276767Z             {
2026-06-19T23:28:15.6276964Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.6277105Z               "line": 167
2026-06-19T23:28:15.6277230Z             }
2026-06-19T23:28:15.6277359Z           ]
2026-06-19T23:28:15.6277482Z         },
2026-06-19T23:28:15.6277612Z         "int": {
2026-06-19T23:28:15.6277763Z           "complete": false,
2026-06-19T23:28:15.6277896Z           "evidence": []
2026-06-19T23:28:15.6278031Z         },
2026-06-19T23:28:15.6278153Z         "unit": {
2026-06-19T23:28:15.6278293Z           "complete": true,
2026-06-19T23:28:15.6278416Z           "evidence": [
2026-06-19T23:28:15.6278545Z             {
2026-06-19T23:28:15.6278717Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.6279026Z               "line": 295
2026-06-19T23:28:15.6279154Z             },
2026-06-19T23:28:15.6279275Z             {
2026-06-19T23:28:15.6279455Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.6279590Z               "line": 832
2026-06-19T23:28:15.6279713Z             },
2026-06-19T23:28:15.6279842Z             {
2026-06-19T23:28:15.6280017Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.6280155Z               "line": 845
2026-06-19T23:28:15.6280273Z             }
2026-06-19T23:28:15.6280405Z           ]
2026-06-19T23:28:15.6280530Z         }
2026-06-19T23:28:15.6280663Z       }
2026-06-19T23:28:15.6280892Z     },
2026-06-19T23:28:15.6281020Z     {
2026-06-19T23:28:15.6281183Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-19T23:28:15.6281368Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-19T23:28:15.6281503Z       "requiredStages": [
2026-06-19T23:28:15.6281626Z         "impl",
2026-06-19T23:28:15.6281755Z         "unit"
2026-06-19T23:28:15.6281893Z       ],
2026-06-19T23:28:15.6282022Z       "stages": {
2026-06-19T23:28:15.6282151Z         "doc": {
2026-06-19T23:28:15.6282289Z           "complete": false,
2026-06-19T23:28:15.6282429Z           "evidence": []
2026-06-19T23:28:15.6282555Z         },
2026-06-19T23:28:15.6282676Z         "impl": {
2026-06-19T23:28:15.6282823Z           "complete": true,
2026-06-19T23:28:15.6282955Z           "evidence": [
2026-06-19T23:28:15.6283075Z             {
2026-06-19T23:28:15.6283249Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6283378Z               "line": 116
2026-06-19T23:28:15.6283506Z             },
2026-06-19T23:28:15.6283639Z             {
2026-06-19T23:28:15.6283826Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.6283954Z               "line": 507
2026-06-19T23:28:15.6284083Z             }
2026-06-19T23:28:15.6284212Z           ]
2026-06-19T23:28:15.6284342Z         },
2026-06-19T23:28:15.6284469Z         "int": {
2026-06-19T23:28:15.6284618Z           "complete": false,
2026-06-19T23:28:15.6284760Z           "evidence": []
2026-06-19T23:28:15.6284884Z         },
2026-06-19T23:28:15.6285014Z         "unit": {
2026-06-19T23:28:15.6285151Z           "complete": true,
2026-06-19T23:28:15.6285286Z           "evidence": [
2026-06-19T23:28:15.6285413Z             {
2026-06-19T23:28:15.6285584Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.6285721Z               "line": 541
2026-06-19T23:28:15.6285848Z             }
2026-06-19T23:28:15.6285973Z           ]
2026-06-19T23:28:15.6286102Z         }
2026-06-19T23:28:15.6286235Z       }
2026-06-19T23:28:15.6286364Z     },
2026-06-19T23:28:15.6286497Z     {
2026-06-19T23:28:15.6286669Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-19T23:28:15.6286889Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-19T23:28:15.6287036Z       "requiredStages": [
2026-06-19T23:28:15.6287155Z         "impl",
2026-06-19T23:28:15.6287289Z         "unit"
2026-06-19T23:28:15.6287413Z       ],
2026-06-19T23:28:15.6287547Z       "stages": {
2026-06-19T23:28:15.6287679Z         "doc": {
2026-06-19T23:28:15.6287809Z           "complete": false,
2026-06-19T23:28:15.6287942Z           "evidence": []
2026-06-19T23:28:15.6288057Z         },
2026-06-19T23:28:15.6288182Z         "impl": {
2026-06-19T23:28:15.6288313Z           "complete": true,
2026-06-19T23:28:15.6288446Z           "evidence": [
2026-06-19T23:28:15.6288581Z             {
2026-06-19T23:28:15.6288761Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6288895Z               "line": 552
2026-06-19T23:28:15.6289095Z             },
2026-06-19T23:28:15.6289224Z             {
2026-06-19T23:28:15.6289381Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.6289515Z               "line": 28
2026-06-19T23:28:15.6289638Z             }
2026-06-19T23:28:15.6289754Z           ]
2026-06-19T23:28:15.6289882Z         },
2026-06-19T23:28:15.6290126Z         "int": {
2026-06-19T23:28:15.6290268Z           "complete": false,
2026-06-19T23:28:15.6290403Z           "evidence": []
2026-06-19T23:28:15.6290530Z         },
2026-06-19T23:28:15.6290662Z         "unit": {
2026-06-19T23:28:15.6290806Z           "complete": true,
2026-06-19T23:28:15.6290937Z           "evidence": [
2026-06-19T23:28:15.6291051Z             {
2026-06-19T23:28:15.6291223Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.6291357Z               "line": 229
2026-06-19T23:28:15.6291491Z             }
2026-06-19T23:28:15.6291623Z           ]
2026-06-19T23:28:15.6291739Z         }
2026-06-19T23:28:15.6291972Z       }
2026-06-19T23:28:15.6292096Z     },
2026-06-19T23:28:15.6292229Z     {
2026-06-19T23:28:15.6292387Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-19T23:28:15.6292568Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-19T23:28:15.6292716Z       "requiredStages": [],
2026-06-19T23:28:15.6292844Z       "stages": {
2026-06-19T23:28:15.6292984Z         "doc": {
2026-06-19T23:28:15.6293125Z           "complete": false,
2026-06-19T23:28:15.6293260Z           "evidence": []
2026-06-19T23:28:15.6293388Z         },
2026-06-19T23:28:15.6293511Z         "impl": {
2026-06-19T23:28:15.6293644Z           "complete": false,
2026-06-19T23:28:15.6293775Z           "evidence": []
2026-06-19T23:28:15.6293904Z         },
2026-06-19T23:28:15.6294029Z         "int": {
2026-06-19T23:28:15.6294166Z           "complete": false,
2026-06-19T23:28:15.6294296Z           "evidence": []
2026-06-19T23:28:15.6294433Z         },
2026-06-19T23:28:15.6294568Z         "unit": {
2026-06-19T23:28:15.6294701Z           "complete": false,
2026-06-19T23:28:15.6294844Z           "evidence": []
2026-06-19T23:28:15.6294972Z         }
2026-06-19T23:28:15.6295101Z       }
2026-06-19T23:28:15.6295226Z     },
2026-06-19T23:28:15.6295358Z     {
2026-06-19T23:28:15.6295522Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-19T23:28:15.6295716Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-19T23:28:15.6295856Z       "requiredStages": [
2026-06-19T23:28:15.6295987Z         "impl",
2026-06-19T23:28:15.6296106Z         "unit"
2026-06-19T23:28:15.6296230Z       ],
2026-06-19T23:28:15.6296361Z       "stages": {
2026-06-19T23:28:15.6296495Z         "doc": {
2026-06-19T23:28:15.6296638Z           "complete": false,
2026-06-19T23:28:15.6296781Z           "evidence": []
2026-06-19T23:28:15.6296910Z         },
2026-06-19T23:28:15.6297047Z         "impl": {
2026-06-19T23:28:15.6297186Z           "complete": true,
2026-06-19T23:28:15.6297329Z           "evidence": [
2026-06-19T23:28:15.6297450Z             {
2026-06-19T23:28:15.6297611Z               "path": "crates/spt-live/src/turn.rs",
2026-06-19T23:28:15.6297749Z               "line": 19
2026-06-19T23:28:15.6297873Z             },
2026-06-19T23:28:15.6297996Z             {
2026-06-19T23:28:15.6298164Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6298311Z               "line": 463
2026-06-19T23:28:15.6298436Z             },
2026-06-19T23:28:15.6298564Z             {
2026-06-19T23:28:15.6298733Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6298864Z               "line": 499
2026-06-19T23:28:15.6299059Z             },
2026-06-19T23:28:15.6299188Z             {
2026-06-19T23:28:15.6299370Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6299513Z               "line": 547
2026-06-19T23:28:15.6299636Z             },
2026-06-19T23:28:15.6299770Z             {
2026-06-19T23:28:15.6299931Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-19T23:28:15.6300075Z               "line": 15
2026-06-19T23:28:15.6300203Z             },
2026-06-19T23:28:15.6300329Z             {
2026-06-19T23:28:15.6300504Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-19T23:28:15.6300634Z               "line": 48
2026-06-19T23:28:15.6300766Z             },
2026-06-19T23:28:15.6300885Z             {
2026-06-19T23:28:15.6301170Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-19T23:28:15.6301299Z               "line": 119
2026-06-19T23:28:15.6301426Z             },
2026-06-19T23:28:15.6301544Z             {
2026-06-19T23:28:15.6301703Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6301835Z               "line": 3920
2026-06-19T23:28:15.6301960Z             }
2026-06-19T23:28:15.6302089Z           ]
2026-06-19T23:28:15.6302212Z         },
2026-06-19T23:28:15.6302346Z         "int": {
2026-06-19T23:28:15.6302484Z           "complete": false,
2026-06-19T23:28:15.6302614Z           "evidence": []
2026-06-19T23:28:15.6302742Z         },
2026-06-19T23:28:15.6302976Z         "unit": {
2026-06-19T23:28:15.6303123Z           "complete": true,
2026-06-19T23:28:15.6303258Z           "evidence": [
2026-06-19T23:28:15.6303386Z             {
2026-06-19T23:28:15.6303554Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6303680Z               "line": 765
2026-06-19T23:28:15.6303820Z             },
2026-06-19T23:28:15.6303944Z             {
2026-06-19T23:28:15.6304113Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-19T23:28:15.6304247Z               "line": 165
2026-06-19T23:28:15.6304373Z             },
2026-06-19T23:28:15.6304498Z             {
2026-06-19T23:28:15.6304655Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-19T23:28:15.6304784Z               "line": 175
2026-06-19T23:28:15.6304908Z             }
2026-06-19T23:28:15.6305031Z           ]
2026-06-19T23:28:15.6305157Z         }
2026-06-19T23:28:15.6305280Z       }
2026-06-19T23:28:15.6305409Z     },
2026-06-19T23:28:15.6305532Z     {
2026-06-19T23:28:15.6305704Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-19T23:28:15.6306799Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-19T23:28:15.6306968Z       "requiredStages": [
2026-06-19T23:28:15.6307093Z         "impl",
2026-06-19T23:28:15.6307217Z         "unit"
2026-06-19T23:28:15.6307341Z       ],
2026-06-19T23:28:15.6307465Z       "stages": {
2026-06-19T23:28:15.6307598Z         "doc": {
2026-06-19T23:28:15.6307732Z           "complete": false,
2026-06-19T23:28:15.6307865Z           "evidence": []
2026-06-19T23:28:15.6308000Z         },
2026-06-19T23:28:15.6308133Z         "impl": {
2026-06-19T23:28:15.6308275Z           "complete": true,
2026-06-19T23:28:15.6308414Z           "evidence": [
2026-06-19T23:28:15.6308547Z             {
2026-06-19T23:28:15.6308715Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6308848Z               "line": 192
2026-06-19T23:28:15.6309058Z             },
2026-06-19T23:28:15.6309177Z             {
2026-06-19T23:28:15.6309340Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6309476Z               "line": 279
2026-06-19T23:28:15.6309605Z             }
2026-06-19T23:28:15.6309730Z           ]
2026-06-19T23:28:15.6309857Z         },
2026-06-19T23:28:15.6309982Z         "int": {
2026-06-19T23:28:15.6310110Z           "complete": false,
2026-06-19T23:28:15.6310245Z           "evidence": []
2026-06-19T23:28:15.6310373Z         },
2026-06-19T23:28:15.6310501Z         "unit": {
2026-06-19T23:28:15.6310635Z           "complete": true,
2026-06-19T23:28:15.6310768Z           "evidence": [
2026-06-19T23:28:15.6310898Z             {
2026-06-19T23:28:15.6311055Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6311189Z               "line": 470
2026-06-19T23:28:15.6311322Z             },
2026-06-19T23:28:15.6311450Z             {
2026-06-19T23:28:15.6311613Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.6311754Z               "line": 526
2026-06-19T23:28:15.6311878Z             }
2026-06-19T23:28:15.6312005Z           ]
2026-06-19T23:28:15.6312239Z         }
2026-06-19T23:28:15.6312362Z       }
2026-06-19T23:28:15.6312492Z     },
2026-06-19T23:28:15.6312616Z     {
2026-06-19T23:28:15.6312782Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-19T23:28:15.6316760Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-19T23:28:15.6317052Z       "requiredStages": [
2026-06-19T23:28:15.6317174Z         "impl",
2026-06-19T23:28:15.6317307Z         "unit",
2026-06-19T23:28:15.6317448Z         "int"
2026-06-19T23:28:15.6317562Z       ],
2026-06-19T23:28:15.6317697Z       "stages": {
2026-06-19T23:28:15.6317820Z         "doc": {
2026-06-19T23:28:15.6317964Z           "complete": false,
2026-06-19T23:28:15.6318096Z           "evidence": []
2026-06-19T23:28:15.6318226Z         },
2026-06-19T23:28:15.6318359Z         "impl": {
2026-06-19T23:28:15.6318497Z           "complete": true,
2026-06-19T23:28:15.6318636Z           "evidence": [
2026-06-19T23:28:15.6318764Z             {
2026-06-19T23:28:15.6319022Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6319145Z               "line": 95
2026-06-19T23:28:15.6319279Z             },
2026-06-19T23:28:15.6319408Z             {
2026-06-19T23:28:15.6319580Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.6319718Z               "line": 132
2026-06-19T23:28:15.6319843Z             },
2026-06-19T23:28:15.6319961Z             {
2026-06-19T23:28:15.6320132Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.6320271Z               "line": 434
2026-06-19T23:28:15.6320403Z             },
2026-06-19T23:28:15.6320528Z             {
2026-06-19T23:28:15.6320708Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6320833Z               "line": 139
2026-06-19T23:28:15.6320962Z             },
2026-06-19T23:28:15.6321090Z             {
2026-06-19T23:28:15.6321271Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6321415Z               "line": 326
2026-06-19T23:28:15.6321529Z             },
2026-06-19T23:28:15.6321658Z             {
2026-06-19T23:28:15.6321830Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6321972Z               "line": 555
2026-06-19T23:28:15.6322093Z             }
2026-06-19T23:28:15.6322220Z           ]
2026-06-19T23:28:15.6322352Z         },
2026-06-19T23:28:15.6322476Z         "int": {
2026-06-19T23:28:15.6322612Z           "complete": true,
2026-06-19T23:28:15.6322756Z           "evidence": [
2026-06-19T23:28:15.6322880Z             {
2026-06-19T23:28:15.6323080Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-19T23:28:15.6323214Z               "line": 32
2026-06-19T23:28:15.6323347Z             }
2026-06-19T23:28:15.6323476Z           ]
2026-06-19T23:28:15.6323604Z         },
2026-06-19T23:28:15.6323857Z         "unit": {
2026-06-19T23:28:15.6323996Z           "complete": true,
2026-06-19T23:28:15.6324124Z           "evidence": [
2026-06-19T23:28:15.6324248Z             {
2026-06-19T23:28:15.6324420Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6324553Z               "line": 625
2026-06-19T23:28:15.6324674Z             },
2026-06-19T23:28:15.6324791Z             {
2026-06-19T23:28:15.6324965Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6325092Z               "line": 646
2026-06-19T23:28:15.6325224Z             },
2026-06-19T23:28:15.6325353Z             {
2026-06-19T23:28:15.6325618Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6325743Z               "line": 662
2026-06-19T23:28:15.6325866Z             },
2026-06-19T23:28:15.6325991Z             {
2026-06-19T23:28:15.6326156Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6326291Z               "line": 680
2026-06-19T23:28:15.6326433Z             },
2026-06-19T23:28:15.6326553Z             {
2026-06-19T23:28:15.6326730Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6326863Z               "line": 704
2026-06-19T23:28:15.6326996Z             }
2026-06-19T23:28:15.6327120Z           ]
2026-06-19T23:28:15.6327240Z         }
2026-06-19T23:28:15.6327367Z       }
2026-06-19T23:28:15.6327493Z     },
2026-06-19T23:28:15.6327621Z     {
2026-06-19T23:28:15.6327772Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-19T23:28:15.6327980Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-19T23:28:15.6328112Z       "requiredStages": [
2026-06-19T23:28:15.6328247Z         "impl",
2026-06-19T23:28:15.6328375Z         "unit"
2026-06-19T23:28:15.6328500Z       ],
2026-06-19T23:28:15.6328624Z       "stages": {
2026-06-19T23:28:15.6328742Z         "doc": {
2026-06-19T23:28:15.6328890Z           "complete": false,
2026-06-19T23:28:15.6329091Z           "evidence": []
2026-06-19T23:28:15.6329233Z         },
2026-06-19T23:28:15.6329367Z         "impl": {
2026-06-19T23:28:15.6329497Z           "complete": true,
2026-06-19T23:28:15.6329625Z           "evidence": [
2026-06-19T23:28:15.6329749Z             {
2026-06-19T23:28:15.6329920Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.6330050Z               "line": 35
2026-06-19T23:28:15.6330178Z             }
2026-06-19T23:28:15.6330311Z           ]
2026-06-19T23:28:15.6330432Z         },
2026-06-19T23:28:15.6330568Z         "int": {
2026-06-19T23:28:15.6330697Z           "complete": false,
2026-06-19T23:28:15.6330831Z           "evidence": []
2026-06-19T23:28:15.6330958Z         },
2026-06-19T23:28:15.6331083Z         "unit": {
2026-06-19T23:28:15.6331225Z           "complete": true,
2026-06-19T23:28:15.6331355Z           "evidence": [
2026-06-19T23:28:15.6331484Z             {
2026-06-19T23:28:15.6331641Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-19T23:28:15.6331770Z               "line": 220
2026-06-19T23:28:15.6331893Z             }
2026-06-19T23:28:15.6332033Z           ]
2026-06-19T23:28:15.6332160Z         }
2026-06-19T23:28:15.6332285Z       }
2026-06-19T23:28:15.6332414Z     },
2026-06-19T23:28:15.6332542Z     {
2026-06-19T23:28:15.6332709Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-19T23:28:15.6335922Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-19T23:28:15.6336241Z       "requiredStages": [
2026-06-19T23:28:15.6336373Z         "impl",
2026-06-19T23:28:15.6336503Z         "unit",
2026-06-19T23:28:15.6336632Z         "int"
2026-06-19T23:28:15.6336764Z       ],
2026-06-19T23:28:15.6337003Z       "stages": {
2026-06-19T23:28:15.6337133Z         "doc": {
2026-06-19T23:28:15.6337280Z           "complete": false,
2026-06-19T23:28:15.6337413Z           "evidence": []
2026-06-19T23:28:15.6337547Z         },
2026-06-19T23:28:15.6337680Z         "impl": {
2026-06-19T23:28:15.6337819Z           "complete": true,
2026-06-19T23:28:15.6337957Z           "evidence": [
2026-06-19T23:28:15.6338087Z             {
2026-06-19T23:28:15.6338261Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6338390Z               "line": 202
2026-06-19T23:28:15.6338522Z             },
2026-06-19T23:28:15.6338644Z             {
2026-06-19T23:28:15.6338817Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-19T23:28:15.6339021Z               "line": 107
2026-06-19T23:28:15.6339150Z             },
2026-06-19T23:28:15.6339283Z             {
2026-06-19T23:28:15.6339451Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-19T23:28:15.6339583Z               "line": 138
2026-06-19T23:28:15.6339723Z             },
2026-06-19T23:28:15.6339851Z             {
2026-06-19T23:28:15.6340024Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6340157Z               "line": 209
2026-06-19T23:28:15.6340285Z             },
2026-06-19T23:28:15.6340409Z             {
2026-06-19T23:28:15.6340581Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6340715Z               "line": 246
2026-06-19T23:28:15.6340843Z             },
2026-06-19T23:28:15.6340963Z             {
2026-06-19T23:28:15.6341133Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6341266Z               "line": 379
2026-06-19T23:28:15.6341387Z             }
2026-06-19T23:28:15.6341514Z           ]
2026-06-19T23:28:15.6341634Z         },
2026-06-19T23:28:15.6341767Z         "int": {
2026-06-19T23:28:15.6341896Z           "complete": true,
2026-06-19T23:28:15.6342039Z           "evidence": [
2026-06-19T23:28:15.6342177Z             {
2026-06-19T23:28:15.6342372Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-19T23:28:15.6342510Z               "line": 17
2026-06-19T23:28:15.6342635Z             }
2026-06-19T23:28:15.6342758Z           ]
2026-06-19T23:28:15.6342884Z         },
2026-06-19T23:28:15.6343016Z         "unit": {
2026-06-19T23:28:15.6343169Z           "complete": true,
2026-06-19T23:28:15.6343293Z           "evidence": [
2026-06-19T23:28:15.6343420Z             {
2026-06-19T23:28:15.6343587Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6343724Z               "line": 982
2026-06-19T23:28:15.6343847Z             }
2026-06-19T23:28:15.6343977Z           ]
2026-06-19T23:28:15.6344099Z         }
2026-06-19T23:28:15.6344215Z       }
2026-06-19T23:28:15.6344343Z     },
2026-06-19T23:28:15.6344462Z     {
2026-06-19T23:28:15.6344634Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-19T23:28:15.6344949Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-19T23:28:15.6345106Z       "requiredStages": [
2026-06-19T23:28:15.6345235Z         "impl",
2026-06-19T23:28:15.6345359Z         "unit"
2026-06-19T23:28:15.6345488Z       ],
2026-06-19T23:28:15.6345606Z       "stages": {
2026-06-19T23:28:15.6345731Z         "doc": {
2026-06-19T23:28:15.6345869Z           "complete": false,
2026-06-19T23:28:15.6346113Z           "evidence": []
2026-06-19T23:28:15.6346245Z         },
2026-06-19T23:28:15.6346368Z         "impl": {
2026-06-19T23:28:15.6346510Z           "complete": true,
2026-06-19T23:28:15.6346637Z           "evidence": [
2026-06-19T23:28:15.6351060Z             {
2026-06-19T23:28:15.6351294Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.6351446Z               "line": 405
2026-06-19T23:28:15.6351581Z             },
2026-06-19T23:28:15.6351707Z             {
2026-06-19T23:28:15.6351894Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.6352026Z               "line": 409
2026-06-19T23:28:15.6352322Z             },
2026-06-19T23:28:15.6352451Z             {
2026-06-19T23:28:15.6352633Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.6352775Z               "line": 156
2026-06-19T23:28:15.6352890Z             }
2026-06-19T23:28:15.6353018Z           ]
2026-06-19T23:28:15.6353148Z         },
2026-06-19T23:28:15.6353286Z         "int": {
2026-06-19T23:28:15.6353425Z           "complete": false,
2026-06-19T23:28:15.6353548Z           "evidence": []
2026-06-19T23:28:15.6353681Z         },
2026-06-19T23:28:15.6353807Z         "unit": {
2026-06-19T23:28:15.6353947Z           "complete": true,
2026-06-19T23:28:15.6354075Z           "evidence": [
2026-06-19T23:28:15.6354208Z             {
2026-06-19T23:28:15.6354379Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.6354518Z               "line": 865
2026-06-19T23:28:15.6354645Z             },
2026-06-19T23:28:15.6354770Z             {
2026-06-19T23:28:15.6354946Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.6355076Z               "line": 879
2026-06-19T23:28:15.6355208Z             },
2026-06-19T23:28:15.6355328Z             {
2026-06-19T23:28:15.6355500Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.6355637Z               "line": 898
2026-06-19T23:28:15.6355766Z             },
2026-06-19T23:28:15.6355900Z             {
2026-06-19T23:28:15.6356067Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.6356191Z               "line": 915
2026-06-19T23:28:15.6356316Z             },
2026-06-19T23:28:15.6356438Z             {
2026-06-19T23:28:15.6356630Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-19T23:28:15.6356758Z               "line": 441
2026-06-19T23:28:15.6356890Z             }
2026-06-19T23:28:15.6357014Z           ]
2026-06-19T23:28:15.6357146Z         }
2026-06-19T23:28:15.6357274Z       }
2026-06-19T23:28:15.6357399Z     },
2026-06-19T23:28:15.6357531Z     {
2026-06-19T23:28:15.6357704Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-19T23:28:15.6367806Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-19T23:28:15.6368440Z       "requiredStages": [
2026-06-19T23:28:15.6368569Z         "doc",
2026-06-19T23:28:15.6368688Z         "impl",
2026-06-19T23:28:15.6368813Z         "unit",
2026-06-19T23:28:15.6369022Z         "int"
2026-06-19T23:28:15.6369143Z       ],
2026-06-19T23:28:15.6369270Z       "stages": {
2026-06-19T23:28:15.6369399Z         "doc": {
2026-06-19T23:28:15.6369528Z           "complete": true,
2026-06-19T23:28:15.6369661Z           "evidence": [
2026-06-19T23:28:15.6369786Z             {
2026-06-19T23:28:15.6369942Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6370074Z               "line": 420
2026-06-19T23:28:15.6370193Z             },
2026-06-19T23:28:15.6370320Z             {
2026-06-19T23:28:15.6370483Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6370663Z               "line": 402
2026-06-19T23:28:15.6370779Z             }
2026-06-19T23:28:15.6370907Z           ]
2026-06-19T23:28:15.6371036Z         },
2026-06-19T23:28:15.6371169Z         "impl": {
2026-06-19T23:28:15.6371312Z           "complete": true,
2026-06-19T23:28:15.6371436Z           "evidence": [
2026-06-19T23:28:15.6371574Z             {
2026-06-19T23:28:15.6371742Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6371875Z               "line": 797
2026-06-19T23:28:15.6372005Z             },
2026-06-19T23:28:15.6372118Z             {
2026-06-19T23:28:15.6372295Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6372428Z               "line": 822
2026-06-19T23:28:15.6372556Z             },
2026-06-19T23:28:15.6372677Z             {
2026-06-19T23:28:15.6372851Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6372985Z               "line": 839
2026-06-19T23:28:15.6373109Z             },
2026-06-19T23:28:15.6373242Z             {
2026-06-19T23:28:15.6373410Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6373547Z               "line": 854
2026-06-19T23:28:15.6373672Z             },
2026-06-19T23:28:15.6373804Z             {
2026-06-19T23:28:15.6373977Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6374210Z               "line": 874
2026-06-19T23:28:15.6374344Z             },
2026-06-19T23:28:15.6374458Z             {
2026-06-19T23:28:15.6374635Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6374759Z               "line": 964
2026-06-19T23:28:15.6374884Z             },
2026-06-19T23:28:15.6375002Z             {
2026-06-19T23:28:15.6375177Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6375319Z               "line": 1016
2026-06-19T23:28:15.6375437Z             },
2026-06-19T23:28:15.6375561Z             {
2026-06-19T23:28:15.6375718Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6375957Z               "line": 1075
2026-06-19T23:28:15.6376090Z             },
2026-06-19T23:28:15.6376215Z             {
2026-06-19T23:28:15.6376400Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.6376535Z               "line": 527
2026-06-19T23:28:15.6376662Z             }
2026-06-19T23:28:15.6376797Z           ]
2026-06-19T23:28:15.6376924Z         },
2026-06-19T23:28:15.6377058Z         "int": {
2026-06-19T23:28:15.6377193Z           "complete": true,
2026-06-19T23:28:15.6377320Z           "evidence": [
2026-06-19T23:28:15.6377445Z             {
2026-06-19T23:28:15.6377621Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-19T23:28:15.6377751Z               "line": 35
2026-06-19T23:28:15.6377878Z             },
2026-06-19T23:28:15.6378005Z             {
2026-06-19T23:28:15.6378177Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-19T23:28:15.6378304Z               "line": 559
2026-06-19T23:28:15.6378428Z             },
2026-06-19T23:28:15.6378561Z             {
2026-06-19T23:28:15.6378729Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-19T23:28:15.6378862Z               "line": 580
2026-06-19T23:28:15.6379049Z             }
2026-06-19T23:28:15.6379177Z           ]
2026-06-19T23:28:15.6379315Z         },
2026-06-19T23:28:15.6379449Z         "unit": {
2026-06-19T23:28:15.6379582Z           "complete": true,
2026-06-19T23:28:15.6379712Z           "evidence": [
2026-06-19T23:28:15.6379844Z             {
2026-06-19T23:28:15.6380017Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6380149Z               "line": 1202
2026-06-19T23:28:15.6380279Z             },
2026-06-19T23:28:15.6380398Z             {
2026-06-19T23:28:15.6380567Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6380697Z               "line": 1246
2026-06-19T23:28:15.6380823Z             },
2026-06-19T23:28:15.6380952Z             {
2026-06-19T23:28:15.6381114Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6381243Z               "line": 1260
2026-06-19T23:28:15.6381372Z             },
2026-06-19T23:28:15.6381500Z             {
2026-06-19T23:28:15.6381672Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6381800Z               "line": 1278
2026-06-19T23:28:15.6381931Z             },
2026-06-19T23:28:15.6382058Z             {
2026-06-19T23:28:15.6382225Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6382359Z               "line": 1302
2026-06-19T23:28:15.6382482Z             },
2026-06-19T23:28:15.6382607Z             {
2026-06-19T23:28:15.6382773Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6382913Z               "line": 1529
2026-06-19T23:28:15.6383031Z             }
2026-06-19T23:28:15.6383165Z           ]
2026-06-19T23:28:15.6383284Z         }
2026-06-19T23:28:15.6383416Z       }
2026-06-19T23:28:15.6383545Z     },
2026-06-19T23:28:15.6383669Z     {
2026-06-19T23:28:15.6383841Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-19T23:28:15.6386088Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-19T23:28:15.6386393Z       "requiredStages": [
2026-06-19T23:28:15.6386527Z         "unit",
2026-06-19T23:28:15.6386655Z         "int"
2026-06-19T23:28:15.6386785Z       ],
2026-06-19T23:28:15.6386998Z       "stages": {
2026-06-19T23:28:15.6387123Z         "doc": {
2026-06-19T23:28:15.6387265Z           "complete": true,
2026-06-19T23:28:15.6387395Z           "evidence": [
2026-06-19T23:28:15.6387514Z             {
2026-06-19T23:28:15.6387672Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6387804Z               "line": 381
2026-06-19T23:28:15.6387933Z             }
2026-06-19T23:28:15.6388063Z           ]
2026-06-19T23:28:15.6388195Z         },
2026-06-19T23:28:15.6388320Z         "impl": {
2026-06-19T23:28:15.6388452Z           "complete": true,
2026-06-19T23:28:15.6388575Z           "evidence": [
2026-06-19T23:28:15.6388700Z             {
2026-06-19T23:28:15.6388869Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.6389464Z               "line": 100
2026-06-19T23:28:15.6389599Z             }
2026-06-19T23:28:15.6389723Z           ]
2026-06-19T23:28:15.6389841Z         },
2026-06-19T23:28:15.6389972Z         "int": {
2026-06-19T23:28:15.6390113Z           "complete": true,
2026-06-19T23:28:15.6390243Z           "evidence": [
2026-06-19T23:28:15.6390376Z             {
2026-06-19T23:28:15.6390544Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.6390676Z               "line": 1042
2026-06-19T23:28:15.6390810Z             }
2026-06-19T23:28:15.6390926Z           ]
2026-06-19T23:28:15.6391057Z         },
2026-06-19T23:28:15.6391181Z         "unit": {
2026-06-19T23:28:15.6391317Z           "complete": true,
2026-06-19T23:28:15.6391440Z           "evidence": [
2026-06-19T23:28:15.6391560Z             {
2026-06-19T23:28:15.6391731Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.6391856Z               "line": 2037
2026-06-19T23:28:15.6391975Z             }
2026-06-19T23:28:15.6392098Z           ]
2026-06-19T23:28:15.6392223Z         }
2026-06-19T23:28:15.6392346Z       }
2026-06-19T23:28:15.6392471Z     },
2026-06-19T23:28:15.6392594Z     {
2026-06-19T23:28:15.6392752Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-19T23:28:15.6393648Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-19T23:28:15.6393807Z       "requiredStages": [
2026-06-19T23:28:15.6393929Z         "doc",
2026-06-19T23:28:15.6394057Z         "impl",
2026-06-19T23:28:15.6394177Z         "unit"
2026-06-19T23:28:15.6394305Z       ],
2026-06-19T23:28:15.6394439Z       "stages": {
2026-06-19T23:28:15.6394558Z         "doc": {
2026-06-19T23:28:15.6394696Z           "complete": true,
2026-06-19T23:28:15.6394826Z           "evidence": [
2026-06-19T23:28:15.6394944Z             {
2026-06-19T23:28:15.6395093Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6395235Z               "line": 366
2026-06-19T23:28:15.6395355Z             }
2026-06-19T23:28:15.6395488Z           ]
2026-06-19T23:28:15.6395621Z         },
2026-06-19T23:28:15.6395746Z         "impl": {
2026-06-19T23:28:15.6395888Z           "complete": true,
2026-06-19T23:28:15.6396018Z           "evidence": [
2026-06-19T23:28:15.6396164Z             {
2026-06-19T23:28:15.6396326Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-19T23:28:15.6396463Z               "line": 87
2026-06-19T23:28:15.6396711Z             },
2026-06-19T23:28:15.6396838Z             {
2026-06-19T23:28:15.6397011Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-19T23:28:15.6397149Z               "line": 105
2026-06-19T23:28:15.6397268Z             },
2026-06-19T23:28:15.6397387Z             {
2026-06-19T23:28:15.6397558Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.6397688Z               "line": 55
2026-06-19T23:28:15.6397811Z             },
2026-06-19T23:28:15.6397941Z             {
2026-06-19T23:28:15.6398107Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.6398341Z               "line": 31
2026-06-19T23:28:15.6398469Z             },
2026-06-19T23:28:15.6398595Z             {
2026-06-19T23:28:15.6398765Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.6398895Z               "line": 446
2026-06-19T23:28:15.6399088Z             },
2026-06-19T23:28:15.6399212Z             {
2026-06-19T23:28:15.6399396Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.6399525Z               "line": 95
2026-06-19T23:28:15.6399654Z             },
2026-06-19T23:28:15.6399782Z             {
2026-06-19T23:28:15.6399954Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.6400096Z               "line": 29
2026-06-19T23:28:15.6400226Z             },
2026-06-19T23:28:15.6400344Z             {
2026-06-19T23:28:15.6400512Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.6400655Z               "line": 104
2026-06-19T23:28:15.6400774Z             },
2026-06-19T23:28:15.6400903Z             {
2026-06-19T23:28:15.6401094Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6401227Z               "line": 208
2026-06-19T23:28:15.6401351Z             },
2026-06-19T23:28:15.6401476Z             {
2026-06-19T23:28:15.6401655Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-19T23:28:15.6401779Z               "line": 28
2026-06-19T23:28:15.6401901Z             },
2026-06-19T23:28:15.6402033Z             {
2026-06-19T23:28:15.6402206Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-19T23:28:15.6402343Z               "line": 74
2026-06-19T23:28:15.6402473Z             },
2026-06-19T23:28:15.6402596Z             {
2026-06-19T23:28:15.6402760Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-19T23:28:15.6402892Z               "line": 32
2026-06-19T23:28:15.6403012Z             },
2026-06-19T23:28:15.6403131Z             {
2026-06-19T23:28:15.6403297Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6403422Z               "line": 40
2026-06-19T23:28:15.6403550Z             },
2026-06-19T23:28:15.6403675Z             {
2026-06-19T23:28:15.6403831Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6403961Z               "line": 184
2026-06-19T23:28:15.6404075Z             },
2026-06-19T23:28:15.6404218Z             {
2026-06-19T23:28:15.6404376Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.6404508Z               "line": 61
2026-06-19T23:28:15.6404636Z             },
2026-06-19T23:28:15.6404761Z             {
2026-06-19T23:28:15.6404913Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.6405033Z               "line": 131
2026-06-19T23:28:15.6405161Z             },
2026-06-19T23:28:15.6405291Z             {
2026-06-19T23:28:15.6405457Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-19T23:28:15.6405585Z               "line": 223
2026-06-19T23:28:15.6405710Z             },
2026-06-19T23:28:15.6405828Z             {
2026-06-19T23:28:15.6406001Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-19T23:28:15.6406143Z               "line": 37
2026-06-19T23:28:15.6406264Z             },
2026-06-19T23:28:15.6406386Z             {
2026-06-19T23:28:15.6406569Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.6406805Z               "line": 38
2026-06-19T23:28:15.6406933Z             },
2026-06-19T23:28:15.6407056Z             {
2026-06-19T23:28:15.6407218Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-19T23:28:15.6407351Z               "line": 36
2026-06-19T23:28:15.6407475Z             },
2026-06-19T23:28:15.6407600Z             {
2026-06-19T23:28:15.6407765Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-19T23:28:15.6407900Z               "line": 40
2026-06-19T23:28:15.6408028Z             }
2026-06-19T23:28:15.6408158Z           ]
2026-06-19T23:28:15.6408286Z         },
2026-06-19T23:28:15.6408409Z         "int": {
2026-06-19T23:28:15.6408653Z           "complete": false,
2026-06-19T23:28:15.6408782Z           "evidence": []
2026-06-19T23:28:15.6408910Z         },
2026-06-19T23:28:15.6409117Z         "unit": {
2026-06-19T23:28:15.6409263Z           "complete": true,
2026-06-19T23:28:15.6409393Z           "evidence": [
2026-06-19T23:28:15.6409517Z             {
2026-06-19T23:28:15.6409705Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.6409834Z               "line": 212
2026-06-19T23:28:15.6409956Z             },
2026-06-19T23:28:15.6410080Z             {
2026-06-19T23:28:15.6410275Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-19T23:28:15.6410414Z               "line": 136
2026-06-19T23:28:15.6410524Z             },
2026-06-19T23:28:15.6410656Z             {
2026-06-19T23:28:15.6410824Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-19T23:28:15.6410961Z               "line": 685
2026-06-19T23:28:15.6411092Z             },
2026-06-19T23:28:15.6411215Z             {
2026-06-19T23:28:15.6411397Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-19T23:28:15.6411519Z               "line": 224
2026-06-19T23:28:15.6411649Z             },
2026-06-19T23:28:15.6411773Z             {
2026-06-19T23:28:15.6411945Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-19T23:28:15.6412084Z               "line": 206
2026-06-19T23:28:15.6412210Z             },
2026-06-19T23:28:15.6412339Z             {
2026-06-19T23:28:15.6412508Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-19T23:28:15.6412642Z               "line": 112
2026-06-19T23:28:15.6412767Z             },
2026-06-19T23:28:15.6412890Z             {
2026-06-19T23:28:15.6413052Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-19T23:28:15.6413185Z               "line": 157
2026-06-19T23:28:15.6413310Z             },
2026-06-19T23:28:15.6413434Z             {
2026-06-19T23:28:15.6413606Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.6413743Z               "line": 215
2026-06-19T23:28:15.6413867Z             },
2026-06-19T23:28:15.6413997Z             {
2026-06-19T23:28:15.6414158Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-19T23:28:15.6414298Z               "line": 141
2026-06-19T23:28:15.6414411Z             },
2026-06-19T23:28:15.6414536Z             {
2026-06-19T23:28:15.6414706Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-19T23:28:15.6414831Z               "line": 162
2026-06-19T23:28:15.6414960Z             }
2026-06-19T23:28:15.6415073Z           ]
2026-06-19T23:28:15.6415201Z         }
2026-06-19T23:28:15.6415317Z       }
2026-06-19T23:28:15.6415449Z     },
2026-06-19T23:28:15.6415569Z     {
2026-06-19T23:28:15.6415745Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-19T23:28:15.6417677Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-19T23:28:15.6417954Z       "requiredStages": [
2026-06-19T23:28:15.6418083Z         "doc",
2026-06-19T23:28:15.6418217Z         "impl",
2026-06-19T23:28:15.6418340Z         "unit",
2026-06-19T23:28:15.6418455Z         "int"
2026-06-19T23:28:15.6418578Z       ],
2026-06-19T23:28:15.6418713Z       "stages": {
2026-06-19T23:28:15.6418837Z         "doc": {
2026-06-19T23:28:15.6419047Z           "complete": true,
2026-06-19T23:28:15.6419180Z           "evidence": [
2026-06-19T23:28:15.6419308Z             {
2026-06-19T23:28:15.6419470Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.6419743Z               "line": 250
2026-06-19T23:28:15.6419876Z             }
2026-06-19T23:28:15.6419996Z           ]
2026-06-19T23:28:15.6420124Z         },
2026-06-19T23:28:15.6420251Z         "impl": {
2026-06-19T23:28:15.6420380Z           "complete": true,
2026-06-19T23:28:15.6420516Z           "evidence": [
2026-06-19T23:28:15.6420645Z             {
2026-06-19T23:28:15.6420817Z               "path": "crates/spt-term/src/pty.rs",
2026-06-19T23:28:15.6420940Z               "line": 135
2026-06-19T23:28:15.6421069Z             },
2026-06-19T23:28:15.6421202Z             {
2026-06-19T23:28:15.6421356Z               "path": "crates/spt-term/src/pty.rs",
2026-06-19T23:28:15.6421493Z               "line": 157
2026-06-19T23:28:15.6421618Z             }
2026-06-19T23:28:15.6421751Z           ]
2026-06-19T23:28:15.6421875Z         },
2026-06-19T23:28:15.6422005Z         "int": {
2026-06-19T23:28:15.6422142Z           "complete": true,
2026-06-19T23:28:15.6422272Z           "evidence": [
2026-06-19T23:28:15.6422394Z             {
2026-06-19T23:28:15.6422572Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-19T23:28:15.6422690Z               "line": 15
2026-06-19T23:28:15.6422818Z             }
2026-06-19T23:28:15.6422942Z           ]
2026-06-19T23:28:15.6423073Z         },
2026-06-19T23:28:15.6423207Z         "unit": {
2026-06-19T23:28:15.6423346Z           "complete": true,
2026-06-19T23:28:15.6423469Z           "evidence": [
2026-06-19T23:28:15.6423598Z             {
2026-06-19T23:28:15.6423764Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-19T23:28:15.6423904Z               "line": 233
2026-06-19T23:28:15.6424031Z             }
2026-06-19T23:28:15.6424152Z           ]
2026-06-19T23:28:15.6424270Z         }
2026-06-19T23:28:15.6424394Z       }
2026-06-19T23:28:15.6424524Z     },
2026-06-19T23:28:15.6424652Z     {
2026-06-19T23:28:15.6424819Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-19T23:28:15.6425038Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-19T23:28:15.6425182Z       "requiredStages": [
2026-06-19T23:28:15.6425310Z         "impl",
2026-06-19T23:28:15.6425435Z         "unit"
2026-06-19T23:28:15.6425562Z       ],
2026-06-19T23:28:15.6425685Z       "stages": {
2026-06-19T23:28:15.6425810Z         "doc": {
2026-06-19T23:28:15.6425961Z           "complete": false,
2026-06-19T23:28:15.6426100Z           "evidence": []
2026-06-19T23:28:15.6426229Z         },
2026-06-19T23:28:15.6426357Z         "impl": {
2026-06-19T23:28:15.6426496Z           "complete": true,
2026-06-19T23:28:15.6426619Z           "evidence": [
2026-06-19T23:28:15.6426740Z             {
2026-06-19T23:28:15.6426901Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6427030Z               "line": 95
2026-06-19T23:28:15.6427163Z             },
2026-06-19T23:28:15.6427283Z             {
2026-06-19T23:28:15.6427440Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.6427559Z               "line": 117
2026-06-19T23:28:15.6427689Z             }
2026-06-19T23:28:15.6427816Z           ]
2026-06-19T23:28:15.6427935Z         },
2026-06-19T23:28:15.6428068Z         "int": {
2026-06-19T23:28:15.6428195Z           "complete": false,
2026-06-19T23:28:15.6428328Z           "evidence": []
2026-06-19T23:28:15.6428453Z         },
2026-06-19T23:28:15.6428682Z         "unit": {
2026-06-19T23:28:15.6428815Z           "complete": true,
2026-06-19T23:28:15.6429015Z           "evidence": [
2026-06-19T23:28:15.6429138Z             {
2026-06-19T23:28:15.6429297Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6429425Z               "line": 250
2026-06-19T23:28:15.6429549Z             },
2026-06-19T23:28:15.6429673Z             {
2026-06-19T23:28:15.6429835Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6429965Z               "line": 412
2026-06-19T23:28:15.6430092Z             },
2026-06-19T23:28:15.6430217Z             {
2026-06-19T23:28:15.6430388Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.6430628Z               "line": 607
2026-06-19T23:28:15.6430754Z             },
2026-06-19T23:28:15.6430883Z             {
2026-06-19T23:28:15.6431043Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.6431176Z               "line": 665
2026-06-19T23:28:15.6431301Z             }
2026-06-19T23:28:15.6431424Z           ]
2026-06-19T23:28:15.6431549Z         }
2026-06-19T23:28:15.6431687Z       }
2026-06-19T23:28:15.6431806Z     },
2026-06-19T23:28:15.6431916Z     {
2026-06-19T23:28:15.6432081Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-19T23:28:15.6434610Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-19T23:28:15.6434779Z       "requiredStages": [
2026-06-19T23:28:15.6434911Z         "impl",
2026-06-19T23:28:15.6435031Z         "unit",
2026-06-19T23:28:15.6435164Z         "int"
2026-06-19T23:28:15.6435288Z       ],
2026-06-19T23:28:15.6435432Z       "stages": {
2026-06-19T23:28:15.6435569Z         "doc": {
2026-06-19T23:28:15.6435704Z           "complete": false,
2026-06-19T23:28:15.6435831Z           "evidence": []
2026-06-19T23:28:15.6435956Z         },
2026-06-19T23:28:15.6436085Z         "impl": {
2026-06-19T23:28:15.6436231Z           "complete": true,
2026-06-19T23:28:15.6436365Z           "evidence": [
2026-06-19T23:28:15.6436493Z             {
2026-06-19T23:28:15.6436675Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6436817Z               "line": 925
2026-06-19T23:28:15.6436942Z             },
2026-06-19T23:28:15.6437080Z             {
2026-06-19T23:28:15.6437261Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6437399Z               "line": 994
2026-06-19T23:28:15.6437528Z             }
2026-06-19T23:28:15.6437649Z           ]
2026-06-19T23:28:15.6437776Z         },
2026-06-19T23:28:15.6437906Z         "int": {
2026-06-19T23:28:15.6438033Z           "complete": true,
2026-06-19T23:28:15.6438167Z           "evidence": [
2026-06-19T23:28:15.6438292Z             {
2026-06-19T23:28:15.6438466Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-19T23:28:15.6438590Z               "line": 187
2026-06-19T23:28:15.6438712Z             },
2026-06-19T23:28:15.6438835Z             {
2026-06-19T23:28:15.6439088Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-19T23:28:15.6439218Z               "line": 343
2026-06-19T23:28:15.6439337Z             }
2026-06-19T23:28:15.6439469Z           ]
2026-06-19T23:28:15.6439595Z         },
2026-06-19T23:28:15.6439732Z         "unit": {
2026-06-19T23:28:15.6439966Z           "complete": true,
2026-06-19T23:28:15.6440094Z           "evidence": [
2026-06-19T23:28:15.6440219Z             {
2026-06-19T23:28:15.6440381Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6440511Z               "line": 1206
2026-06-19T23:28:15.6440638Z             },
2026-06-19T23:28:15.6440763Z             {
2026-06-19T23:28:15.6440915Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6441044Z               "line": 8088
2026-06-19T23:28:15.6441173Z             }
2026-06-19T23:28:15.6441286Z           ]
2026-06-19T23:28:15.6441410Z         }
2026-06-19T23:28:15.6441537Z       }
2026-06-19T23:28:15.6441760Z     },
2026-06-19T23:28:15.6441885Z     {
2026-06-19T23:28:15.6442041Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-19T23:28:15.6442275Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-19T23:28:15.6442405Z       "requiredStages": [
2026-06-19T23:28:15.6442533Z         "impl",
2026-06-19T23:28:15.6442666Z         "unit"
2026-06-19T23:28:15.6442786Z       ],
2026-06-19T23:28:15.6442909Z       "stages": {
2026-06-19T23:28:15.6443034Z         "doc": {
2026-06-19T23:28:15.6443167Z           "complete": false,
2026-06-19T23:28:15.6443300Z           "evidence": []
2026-06-19T23:28:15.6443430Z         },
2026-06-19T23:28:15.6443553Z         "impl": {
2026-06-19T23:28:15.6443683Z           "complete": true,
2026-06-19T23:28:15.6443820Z           "evidence": [
2026-06-19T23:28:15.6443943Z             {
2026-06-19T23:28:15.6444109Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6444241Z               "line": 262
2026-06-19T23:28:15.6444380Z             },
2026-06-19T23:28:15.6444504Z             {
2026-06-19T23:28:15.6444671Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6444800Z               "line": 307
2026-06-19T23:28:15.6444923Z             },
2026-06-19T23:28:15.6445052Z             {
2026-06-19T23:28:15.6445213Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6445357Z               "line": 319
2026-06-19T23:28:15.6445481Z             }
2026-06-19T23:28:15.6445606Z           ]
2026-06-19T23:28:15.6445729Z         },
2026-06-19T23:28:15.6445862Z         "int": {
2026-06-19T23:28:15.6446006Z           "complete": false,
2026-06-19T23:28:15.6446143Z           "evidence": []
2026-06-19T23:28:15.6446269Z         },
2026-06-19T23:28:15.6446396Z         "unit": {
2026-06-19T23:28:15.6446536Z           "complete": true,
2026-06-19T23:28:15.6446664Z           "evidence": [
2026-06-19T23:28:15.6446796Z             {
2026-06-19T23:28:15.6446959Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6447081Z               "line": 455
2026-06-19T23:28:15.6447211Z             },
2026-06-19T23:28:15.6447336Z             {
2026-06-19T23:28:15.6447497Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6447626Z               "line": 499
2026-06-19T23:28:15.6447754Z             }
2026-06-19T23:28:15.6447884Z           ]
2026-06-19T23:28:15.6448012Z         }
2026-06-19T23:28:15.6448131Z       }
2026-06-19T23:28:15.6448242Z     },
2026-06-19T23:28:15.6448360Z     {
2026-06-19T23:28:15.6448509Z       "id": "REQ-HOST-RUN-1",
2026-06-19T23:28:15.6451155Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-19T23:28:15.6451437Z       "requiredStages": [
2026-06-19T23:28:15.6451566Z         "impl",
2026-06-19T23:28:15.6451686Z         "unit",
2026-06-19T23:28:15.6451808Z         "int"
2026-06-19T23:28:15.6451931Z       ],
2026-06-19T23:28:15.6452060Z       "stages": {
2026-06-19T23:28:15.6452187Z         "doc": {
2026-06-19T23:28:15.6452325Z           "complete": false,
2026-06-19T23:28:15.6452454Z           "evidence": []
2026-06-19T23:28:15.6452568Z         },
2026-06-19T23:28:15.6452702Z         "impl": {
2026-06-19T23:28:15.6452835Z           "complete": true,
2026-06-19T23:28:15.6452960Z           "evidence": [
2026-06-19T23:28:15.6453093Z             {
2026-06-19T23:28:15.6453379Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6453508Z               "line": 30
2026-06-19T23:28:15.6453628Z             },
2026-06-19T23:28:15.6453755Z             {
2026-06-19T23:28:15.6453929Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6454065Z               "line": 69
2026-06-19T23:28:15.6454180Z             },
2026-06-19T23:28:15.6454305Z             {
2026-06-19T23:28:15.6454484Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6454603Z               "line": 156
2026-06-19T23:28:15.6454730Z             },
2026-06-19T23:28:15.6454853Z             {
2026-06-19T23:28:15.6455007Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6455139Z               "line": 1264
2026-06-19T23:28:15.6455265Z             }
2026-06-19T23:28:15.6455388Z           ]
2026-06-19T23:28:15.6455507Z         },
2026-06-19T23:28:15.6455636Z         "int": {
2026-06-19T23:28:15.6455773Z           "complete": true,
2026-06-19T23:28:15.6455903Z           "evidence": [
2026-06-19T23:28:15.6456027Z             {
2026-06-19T23:28:15.6456199Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.6456332Z               "line": 285
2026-06-19T23:28:15.6456456Z             }
2026-06-19T23:28:15.6456594Z           ]
2026-06-19T23:28:15.6456718Z         },
2026-06-19T23:28:15.6456848Z         "unit": {
2026-06-19T23:28:15.6456990Z           "complete": true,
2026-06-19T23:28:15.6457115Z           "evidence": [
2026-06-19T23:28:15.6457233Z             {
2026-06-19T23:28:15.6457408Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6457548Z               "line": 202
2026-06-19T23:28:15.6457675Z             },
2026-06-19T23:28:15.6457805Z             {
2026-06-19T23:28:15.6457985Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6458110Z               "line": 269
2026-06-19T23:28:15.6458234Z             },
2026-06-19T23:28:15.6458362Z             {
2026-06-19T23:28:15.6458543Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6458667Z               "line": 302
2026-06-19T23:28:15.6458797Z             }
2026-06-19T23:28:15.6458925Z           ]
2026-06-19T23:28:15.6459135Z         }
2026-06-19T23:28:15.6459272Z       }
2026-06-19T23:28:15.6459398Z     },
2026-06-19T23:28:15.6459515Z     {
2026-06-19T23:28:15.6459658Z       "id": "REQ-HOST-RUN-2",
2026-06-19T23:28:15.6461472Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-19T23:28:15.6461631Z       "requiredStages": [
2026-06-19T23:28:15.6461748Z         "impl",
2026-06-19T23:28:15.6461878Z         "unit",
2026-06-19T23:28:15.6462111Z         "int"
2026-06-19T23:28:15.6462227Z       ],
2026-06-19T23:28:15.6462354Z       "stages": {
2026-06-19T23:28:15.6462473Z         "doc": {
2026-06-19T23:28:15.6462616Z           "complete": false,
2026-06-19T23:28:15.6462747Z           "evidence": []
2026-06-19T23:28:15.6462880Z         },
2026-06-19T23:28:15.6463005Z         "impl": {
2026-06-19T23:28:15.6463133Z           "complete": true,
2026-06-19T23:28:15.6463262Z           "evidence": [
2026-06-19T23:28:15.6463390Z             {
2026-06-19T23:28:15.6467540Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.6467718Z               "line": 157
2026-06-19T23:28:15.6467850Z             },
2026-06-19T23:28:15.6468155Z             {
2026-06-19T23:28:15.6468322Z               "path": "crates/spt-term/src/pty.rs",
2026-06-19T23:28:15.6468465Z               "line": 113
2026-06-19T23:28:15.6468583Z             }
2026-06-19T23:28:15.6468709Z           ]
2026-06-19T23:28:15.6468822Z         },
2026-06-19T23:28:15.6469037Z         "int": {
2026-06-19T23:28:15.6469184Z           "complete": true,
2026-06-19T23:28:15.6469309Z           "evidence": [
2026-06-19T23:28:15.6469437Z             {
2026-06-19T23:28:15.6469610Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.6469742Z               "line": 572
2026-06-19T23:28:15.6469867Z             }
2026-06-19T23:28:15.6469996Z           ]
2026-06-19T23:28:15.6470123Z         },
2026-06-19T23:28:15.6470247Z         "unit": {
2026-06-19T23:28:15.6470393Z           "complete": true,
2026-06-19T23:28:15.6470525Z           "evidence": [
2026-06-19T23:28:15.6470655Z             {
2026-06-19T23:28:15.6470821Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-19T23:28:15.6470970Z               "line": 86
2026-06-19T23:28:15.6471093Z             }
2026-06-19T23:28:15.6471218Z           ]
2026-06-19T23:28:15.6471347Z         }
2026-06-19T23:28:15.6471465Z       }
2026-06-19T23:28:15.6471595Z     },
2026-06-19T23:28:15.6471713Z     {
2026-06-19T23:28:15.6471847Z       "id": "REQ-INFRA-1",
2026-06-19T23:28:15.6472080Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-19T23:28:15.6472210Z       "requiredStages": [],
2026-06-19T23:28:15.6472338Z       "stages": {
2026-06-19T23:28:15.6472463Z         "doc": {
2026-06-19T23:28:15.6472614Z           "complete": false,
2026-06-19T23:28:15.6472744Z           "evidence": []
2026-06-19T23:28:15.6472864Z         },
2026-06-19T23:28:15.6472990Z         "impl": {
2026-06-19T23:28:15.6473123Z           "complete": false,
2026-06-19T23:28:15.6473260Z           "evidence": []
2026-06-19T23:28:15.6473373Z         },
2026-06-19T23:28:15.6473503Z         "int": {
2026-06-19T23:28:15.6473650Z           "complete": false,
2026-06-19T23:28:15.6473785Z           "evidence": []
2026-06-19T23:28:15.6473913Z         },
2026-06-19T23:28:15.6474041Z         "unit": {
2026-06-19T23:28:15.6474180Z           "complete": false,
2026-06-19T23:28:15.6474308Z           "evidence": []
2026-06-19T23:28:15.6474433Z         }
2026-06-19T23:28:15.6474557Z       }
2026-06-19T23:28:15.6474685Z     },
2026-06-19T23:28:15.6474809Z     {
2026-06-19T23:28:15.6474942Z       "id": "REQ-INST-1",
2026-06-19T23:28:15.6475157Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-19T23:28:15.6475291Z       "requiredStages": [],
2026-06-19T23:28:15.6475421Z       "stages": {
2026-06-19T23:28:15.6475547Z         "doc": {
2026-06-19T23:28:15.6475680Z           "complete": false,
2026-06-19T23:28:15.6475822Z           "evidence": []
2026-06-19T23:28:15.6475945Z         },
2026-06-19T23:28:15.6476080Z         "impl": {
2026-06-19T23:28:15.6476212Z           "complete": false,
2026-06-19T23:28:15.6476361Z           "evidence": []
2026-06-19T23:28:15.6476489Z         },
2026-06-19T23:28:15.6476623Z         "int": {
2026-06-19T23:28:15.6476761Z           "complete": false,
2026-06-19T23:28:15.6476894Z           "evidence": []
2026-06-19T23:28:15.6477019Z         },
2026-06-19T23:28:15.6477142Z         "unit": {
2026-06-19T23:28:15.6477395Z           "complete": false,
2026-06-19T23:28:15.6477524Z           "evidence": []
2026-06-19T23:28:15.6477658Z         }
2026-06-19T23:28:15.6477781Z       }
2026-06-19T23:28:15.6477906Z     },
2026-06-19T23:28:15.6478034Z     {
2026-06-19T23:28:15.6478163Z       "id": "REQ-INST-10",
2026-06-19T23:28:15.6478434Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-19T23:28:15.6478572Z       "requiredStages": [
2026-06-19T23:28:15.6478696Z         "impl",
2026-06-19T23:28:15.6478829Z         "unit"
2026-06-19T23:28:15.6479035Z       ],
2026-06-19T23:28:15.6479168Z       "stages": {
2026-06-19T23:28:15.6479382Z         "doc": {
2026-06-19T23:28:15.6479526Z           "complete": false,
2026-06-19T23:28:15.6479654Z           "evidence": []
2026-06-19T23:28:15.6479778Z         },
2026-06-19T23:28:15.6479907Z         "impl": {
2026-06-19T23:28:15.6480036Z           "complete": true,
2026-06-19T23:28:15.6480184Z           "evidence": [
2026-06-19T23:28:15.6480312Z             {
2026-06-19T23:28:15.6480499Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6480622Z               "line": 648
2026-06-19T23:28:15.6480750Z             },
2026-06-19T23:28:15.6480878Z             {
2026-06-19T23:28:15.6481052Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6481182Z               "line": 725
2026-06-19T23:28:15.6481310Z             },
2026-06-19T23:28:15.6481434Z             {
2026-06-19T23:28:15.6481596Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-19T23:28:15.6481725Z               "line": 13
2026-06-19T23:28:15.6481850Z             },
2026-06-19T23:28:15.6481982Z             {
2026-06-19T23:28:15.6482145Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-19T23:28:15.6482273Z               "line": 67
2026-06-19T23:28:15.6482403Z             },
2026-06-19T23:28:15.6482526Z             {
2026-06-19T23:28:15.6482688Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.6482817Z               "line": 18
2026-06-19T23:28:15.6482940Z             },
2026-06-19T23:28:15.6483066Z             {
2026-06-19T23:28:15.6483222Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.6483352Z               "line": 444
2026-06-19T23:28:15.6483475Z             }
2026-06-19T23:28:15.6483602Z           ]
2026-06-19T23:28:15.6483726Z         },
2026-06-19T23:28:15.6483848Z         "int": {
2026-06-19T23:28:15.6483977Z           "complete": false,
2026-06-19T23:28:15.6484101Z           "evidence": []
2026-06-19T23:28:15.6484224Z         },
2026-06-19T23:28:15.6484350Z         "unit": {
2026-06-19T23:28:15.6484487Z           "complete": true,
2026-06-19T23:28:15.6484621Z           "evidence": [
2026-06-19T23:28:15.6484745Z             {
2026-06-19T23:28:15.6484921Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6485041Z               "line": 932
2026-06-19T23:28:15.6485164Z             },
2026-06-19T23:28:15.6485284Z             {
2026-06-19T23:28:15.6485465Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6485590Z               "line": 1309
2026-06-19T23:28:15.6485712Z             },
2026-06-19T23:28:15.6485846Z             {
2026-06-19T23:28:15.6486018Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6486155Z               "line": 1320
2026-06-19T23:28:15.6486279Z             },
2026-06-19T23:28:15.6486410Z             {
2026-06-19T23:28:15.6486572Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6486701Z               "line": 1336
2026-06-19T23:28:15.6486834Z             },
2026-06-19T23:28:15.6486964Z             {
2026-06-19T23:28:15.6487139Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6487273Z               "line": 1352
2026-06-19T23:28:15.6487401Z             },
2026-06-19T23:28:15.6487527Z             {
2026-06-19T23:28:15.6487698Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6487950Z               "line": 1374
2026-06-19T23:28:15.6488069Z             },
2026-06-19T23:28:15.6488200Z             {
2026-06-19T23:28:15.6488379Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6488510Z               "line": 1679
2026-06-19T23:28:15.6488636Z             },
2026-06-19T23:28:15.6488762Z             {
2026-06-19T23:28:15.6488932Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-19T23:28:15.6489137Z               "line": 130
2026-06-19T23:28:15.6489256Z             },
2026-06-19T23:28:15.6489389Z             {
2026-06-19T23:28:15.6489538Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-19T23:28:15.6489819Z               "line": 167
2026-06-19T23:28:15.6489942Z             },
2026-06-19T23:28:15.6490066Z             {
2026-06-19T23:28:15.6490219Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-19T23:28:15.6490357Z               "line": 175
2026-06-19T23:28:15.6490477Z             },
2026-06-19T23:28:15.6490615Z             {
2026-06-19T23:28:15.6490773Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-19T23:28:15.6490900Z               "line": 183
2026-06-19T23:28:15.6491035Z             },
2026-06-19T23:28:15.6491158Z             {
2026-06-19T23:28:15.6491328Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.6491457Z               "line": 896
2026-06-19T23:28:15.6491579Z             }
2026-06-19T23:28:15.6491699Z           ]
2026-06-19T23:28:15.6491827Z         }
2026-06-19T23:28:15.6491951Z       }
2026-06-19T23:28:15.6492076Z     },
2026-06-19T23:28:15.6492204Z     {
2026-06-19T23:28:15.6492348Z       "id": "REQ-INST-11",
2026-06-19T23:28:15.6492629Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-19T23:28:15.6492771Z       "requiredStages": [
2026-06-19T23:28:15.6492895Z         "impl",
2026-06-19T23:28:15.6493030Z         "unit"
2026-06-19T23:28:15.6493148Z       ],
2026-06-19T23:28:15.6493278Z       "stages": {
2026-06-19T23:28:15.6493410Z         "doc": {
2026-06-19T23:28:15.6493539Z           "complete": false,
2026-06-19T23:28:15.6493669Z           "evidence": []
2026-06-19T23:28:15.6493782Z         },
2026-06-19T23:28:15.6493902Z         "impl": {
2026-06-19T23:28:15.6494040Z           "complete": true,
2026-06-19T23:28:15.6494172Z           "evidence": [
2026-06-19T23:28:15.6494296Z             {
2026-06-19T23:28:15.6494460Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6494589Z               "line": 514
2026-06-19T23:28:15.6494714Z             },
2026-06-19T23:28:15.6494837Z             {
2026-06-19T23:28:15.6495015Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6495147Z               "line": 297
2026-06-19T23:28:15.6495277Z             },
2026-06-19T23:28:15.6495386Z             {
2026-06-19T23:28:15.6495558Z               "path": "crates/spt-store/src/rename.rs",
2026-06-19T23:28:15.6495682Z               "line": 59
2026-06-19T23:28:15.6495815Z             },
2026-06-19T23:28:15.6495939Z             {
2026-06-19T23:28:15.6496092Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6496226Z               "line": 5263
2026-06-19T23:28:15.6496349Z             },
2026-06-19T23:28:15.6496470Z             {
2026-06-19T23:28:15.6496625Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6496767Z               "line": 7109
2026-06-19T23:28:15.6496891Z             }
2026-06-19T23:28:15.6497032Z           ]
2026-06-19T23:28:15.6497161Z         },
2026-06-19T23:28:15.6497285Z         "int": {
2026-06-19T23:28:15.6497428Z           "complete": false,
2026-06-19T23:28:15.6497572Z           "evidence": []
2026-06-19T23:28:15.6497695Z         },
2026-06-19T23:28:15.6497829Z         "unit": {
2026-06-19T23:28:15.6497971Z           "complete": true,
2026-06-19T23:28:15.6498101Z           "evidence": [
2026-06-19T23:28:15.6498219Z             {
2026-06-19T23:28:15.6498397Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6498620Z               "line": 1479
2026-06-19T23:28:15.6498750Z             },
2026-06-19T23:28:15.6498872Z             {
2026-06-19T23:28:15.6499126Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6499264Z               "line": 1512
2026-06-19T23:28:15.6499389Z             },
2026-06-19T23:28:15.6499515Z             {
2026-06-19T23:28:15.6499687Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6499830Z               "line": 527
2026-06-19T23:28:15.6499963Z             },
2026-06-19T23:28:15.6500084Z             {
2026-06-19T23:28:15.6500254Z               "path": "crates/spt-store/src/rename.rs",
2026-06-19T23:28:15.6500498Z               "line": 160
2026-06-19T23:28:15.6500627Z             },
2026-06-19T23:28:15.6500751Z             {
2026-06-19T23:28:15.6500927Z               "path": "crates/spt-store/src/rename.rs",
2026-06-19T23:28:15.6501061Z               "line": 190
2026-06-19T23:28:15.6501180Z             },
2026-06-19T23:28:15.6501310Z             {
2026-06-19T23:28:15.6501460Z               "path": "crates/spt-store/src/rename.rs",
2026-06-19T23:28:15.6501590Z               "line": 225
2026-06-19T23:28:15.6501718Z             },
2026-06-19T23:28:15.6501846Z             {
2026-06-19T23:28:15.6502003Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6502130Z               "line": 7966
2026-06-19T23:28:15.6502249Z             }
2026-06-19T23:28:15.6502374Z           ]
2026-06-19T23:28:15.6502496Z         }
2026-06-19T23:28:15.6502617Z       }
2026-06-19T23:28:15.6502740Z     },
2026-06-19T23:28:15.6502864Z     {
2026-06-19T23:28:15.6502998Z       "id": "REQ-INST-12",
2026-06-19T23:28:15.6503351Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-19T23:28:15.6503479Z       "requiredStages": [
2026-06-19T23:28:15.6503613Z         "impl",
2026-06-19T23:28:15.6503737Z         "unit"
2026-06-19T23:28:15.6503862Z       ],
2026-06-19T23:28:15.6503999Z       "stages": {
2026-06-19T23:28:15.6504119Z         "doc": {
2026-06-19T23:28:15.6504262Z           "complete": false,
2026-06-19T23:28:15.6504390Z           "evidence": []
2026-06-19T23:28:15.6504520Z         },
2026-06-19T23:28:15.6504642Z         "impl": {
2026-06-19T23:28:15.6504775Z           "complete": true,
2026-06-19T23:28:15.6504903Z           "evidence": [
2026-06-19T23:28:15.6505025Z             {
2026-06-19T23:28:15.6505198Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6505326Z               "line": 566
2026-06-19T23:28:15.6505446Z             },
2026-06-19T23:28:15.6505565Z             {
2026-06-19T23:28:15.6505741Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6505884Z               "line": 659
2026-06-19T23:28:15.6506012Z             },
2026-06-19T23:28:15.6506137Z             {
2026-06-19T23:28:15.6506298Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6506443Z               "line": 739
2026-06-19T23:28:15.6506575Z             },
2026-06-19T23:28:15.6506715Z             {
2026-06-19T23:28:15.6506884Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6507015Z               "line": 96
2026-06-19T23:28:15.6507148Z             },
2026-06-19T23:28:15.6507275Z             {
2026-06-19T23:28:15.6507442Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6507568Z               "line": 269
2026-06-19T23:28:15.6507697Z             },
2026-06-19T23:28:15.6507827Z             {
2026-06-19T23:28:15.6507998Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.6508137Z               "line": 148
2026-06-19T23:28:15.6508260Z             }
2026-06-19T23:28:15.6508389Z           ]
2026-06-19T23:28:15.6508512Z         },
2026-06-19T23:28:15.6508637Z         "int": {
2026-06-19T23:28:15.6508779Z           "complete": false,
2026-06-19T23:28:15.6508904Z           "evidence": []
2026-06-19T23:28:15.6509286Z         },
2026-06-19T23:28:15.6509413Z         "unit": {
2026-06-19T23:28:15.6509567Z           "complete": true,
2026-06-19T23:28:15.6509696Z           "evidence": [
2026-06-19T23:28:15.6509819Z             {
2026-06-19T23:28:15.6509992Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6510119Z               "line": 1554
2026-06-19T23:28:15.6510233Z             },
2026-06-19T23:28:15.6510353Z             {
2026-06-19T23:28:15.6510523Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6510648Z               "line": 1577
2026-06-19T23:28:15.6510781Z             },
2026-06-19T23:28:15.6510911Z             {
2026-06-19T23:28:15.6511177Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6511311Z               "line": 1614
2026-06-19T23:28:15.6511420Z             },
2026-06-19T23:28:15.6511555Z             {
2026-06-19T23:28:15.6511711Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6511851Z               "line": 457
2026-06-19T23:28:15.6511982Z             },
2026-06-19T23:28:15.6512102Z             {
2026-06-19T23:28:15.6512273Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.6512401Z               "line": 185
2026-06-19T23:28:15.6512526Z             },
2026-06-19T23:28:15.6512652Z             {
2026-06-19T23:28:15.6512819Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.6512957Z               "line": 206
2026-06-19T23:28:15.6513076Z             },
2026-06-19T23:28:15.6513191Z             {
2026-06-19T23:28:15.6513362Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.6513506Z               "line": 232
2026-06-19T23:28:15.6513634Z             }
2026-06-19T23:28:15.6513754Z           ]
2026-06-19T23:28:15.6513883Z         }
2026-06-19T23:28:15.6514006Z       }
2026-06-19T23:28:15.6514135Z     },
2026-06-19T23:28:15.6514249Z     {
2026-06-19T23:28:15.6514388Z       "id": "REQ-INST-13",
2026-06-19T23:28:15.6514626Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-19T23:28:15.6514765Z       "requiredStages": [
2026-06-19T23:28:15.6514897Z         "impl",
2026-06-19T23:28:15.6515018Z         "unit"
2026-06-19T23:28:15.6515146Z       ],
2026-06-19T23:28:15.6515268Z       "stages": {
2026-06-19T23:28:15.6515397Z         "doc": {
2026-06-19T23:28:15.6515538Z           "complete": false,
2026-06-19T23:28:15.6515672Z           "evidence": []
2026-06-19T23:28:15.6515796Z         },
2026-06-19T23:28:15.6515924Z         "impl": {
2026-06-19T23:28:15.6516068Z           "complete": true,
2026-06-19T23:28:15.6516201Z           "evidence": [
2026-06-19T23:28:15.6516340Z             {
2026-06-19T23:28:15.6516515Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6516645Z               "line": 100
2026-06-19T23:28:15.6516773Z             },
2026-06-19T23:28:15.6516897Z             {
2026-06-19T23:28:15.6517083Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.6517221Z               "line": 171
2026-06-19T23:28:15.6517351Z             }
2026-06-19T23:28:15.6517479Z           ]
2026-06-19T23:28:15.6517604Z         },
2026-06-19T23:28:15.6517736Z         "int": {
2026-06-19T23:28:15.6517873Z           "complete": false,
2026-06-19T23:28:15.6518007Z           "evidence": []
2026-06-19T23:28:15.6518133Z         },
2026-06-19T23:28:15.6518262Z         "unit": {
2026-06-19T23:28:15.6518401Z           "complete": true,
2026-06-19T23:28:15.6518534Z           "evidence": [
2026-06-19T23:28:15.6518663Z             {
2026-06-19T23:28:15.6518834Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.6519077Z               "line": 261
2026-06-19T23:28:15.6519198Z             },
2026-06-19T23:28:15.6519325Z             {
2026-06-19T23:28:15.6519507Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-19T23:28:15.6519640Z               "line": 279
2026-06-19T23:28:15.6519764Z             }
2026-06-19T23:28:15.6519997Z           ]
2026-06-19T23:28:15.6520132Z         }
2026-06-19T23:28:15.6520256Z       }
2026-06-19T23:28:15.6520384Z     },
2026-06-19T23:28:15.6520509Z     {
2026-06-19T23:28:15.6520636Z       "id": "REQ-INST-14",
2026-06-19T23:28:15.6521064Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-19T23:28:15.6521189Z       "requiredStages": [
2026-06-19T23:28:15.6521322Z         "doc",
2026-06-19T23:28:15.6521447Z         "impl",
2026-06-19T23:28:15.6521571Z         "unit"
2026-06-19T23:28:15.6521694Z       ],
2026-06-19T23:28:15.6521824Z       "stages": {
2026-06-19T23:28:15.6522057Z         "doc": {
2026-06-19T23:28:15.6522190Z           "complete": true,
2026-06-19T23:28:15.6522314Z           "evidence": [
2026-06-19T23:28:15.6522439Z             {
2026-06-19T23:28:15.6522586Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6522720Z               "line": 588
2026-06-19T23:28:15.6522843Z             },
2026-06-19T23:28:15.6522980Z             {
2026-06-19T23:28:15.6523123Z               "path": "docs/STORAGE.md",
2026-06-19T23:28:15.6523255Z               "line": 49
2026-06-19T23:28:15.6523379Z             }
2026-06-19T23:28:15.6523508Z           ]
2026-06-19T23:28:15.6523626Z         },
2026-06-19T23:28:15.6523747Z         "impl": {
2026-06-19T23:28:15.6523889Z           "complete": true,
2026-06-19T23:28:15.6524009Z           "evidence": [
2026-06-19T23:28:15.6524138Z             {
2026-06-19T23:28:15.6524324Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6524462Z               "line": 410
2026-06-19T23:28:15.6524590Z             },
2026-06-19T23:28:15.6524719Z             {
2026-06-19T23:28:15.6524895Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6525015Z               "line": 367
2026-06-19T23:28:15.6525143Z             },
2026-06-19T23:28:15.6525268Z             {
2026-06-19T23:28:15.6525434Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.6525583Z               "line": 281
2026-06-19T23:28:15.6525706Z             },
2026-06-19T23:28:15.6525828Z             {
2026-06-19T23:28:15.6525981Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6526118Z               "line": 1549
2026-06-19T23:28:15.6526246Z             }
2026-06-19T23:28:15.6526371Z           ]
2026-06-19T23:28:15.6526503Z         },
2026-06-19T23:28:15.6526628Z         "int": {
2026-06-19T23:28:15.6526775Z           "complete": false,
2026-06-19T23:28:15.6526910Z           "evidence": []
2026-06-19T23:28:15.6527033Z         },
2026-06-19T23:28:15.6527152Z         "unit": {
2026-06-19T23:28:15.6527300Z           "complete": true,
2026-06-19T23:28:15.6527433Z           "evidence": [
2026-06-19T23:28:15.6527553Z             {
2026-06-19T23:28:15.6527729Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6527859Z               "line": 1163
2026-06-19T23:28:15.6527991Z             },
2026-06-19T23:28:15.6528125Z             {
2026-06-19T23:28:15.6528301Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6528433Z               "line": 944
2026-06-19T23:28:15.6528548Z             },
2026-06-19T23:28:15.6528674Z             {
2026-06-19T23:28:15.6528846Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6529075Z               "line": 1205
2026-06-19T23:28:15.6529195Z             },
2026-06-19T23:28:15.6529318Z             {
2026-06-19T23:28:15.6529486Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.6529614Z               "line": 633
2026-06-19T23:28:15.6529743Z             },
2026-06-19T23:28:15.6529876Z             {
2026-06-19T23:28:15.6530024Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6530144Z               "line": 8042
2026-06-19T23:28:15.6530263Z             }
2026-06-19T23:28:15.6530392Z           ]
2026-06-19T23:28:15.6530529Z         }
2026-06-19T23:28:15.6530658Z       }
2026-06-19T23:28:15.6530939Z     },
2026-06-19T23:28:15.6531064Z     {
2026-06-19T23:28:15.6531196Z       "id": "REQ-INST-15",
2026-06-19T23:28:15.6531988Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-19T23:28:15.6532121Z       "requiredStages": [
2026-06-19T23:28:15.6532249Z         "doc",
2026-06-19T23:28:15.6532379Z         "impl",
2026-06-19T23:28:15.6532503Z         "unit"
2026-06-19T23:28:15.6532627Z       ],
2026-06-19T23:28:15.6532850Z       "stages": {
2026-06-19T23:28:15.6532980Z         "doc": {
2026-06-19T23:28:15.6533122Z           "complete": true,
2026-06-19T23:28:15.6533246Z           "evidence": [
2026-06-19T23:28:15.6533380Z             {
2026-06-19T23:28:15.6533603Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-19T23:28:15.6533753Z               "line": 3
2026-06-19T23:28:15.6533881Z             }
2026-06-19T23:28:15.6534006Z           ]
2026-06-19T23:28:15.6534134Z         },
2026-06-19T23:28:15.6534254Z         "impl": {
2026-06-19T23:28:15.6534397Z           "complete": true,
2026-06-19T23:28:15.6534510Z           "evidence": [
2026-06-19T23:28:15.6534640Z             {
2026-06-19T23:28:15.6534821Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6534946Z               "line": 353
2026-06-19T23:28:15.6535078Z             },
2026-06-19T23:28:15.6535203Z             {
2026-06-19T23:28:15.6535374Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.6535513Z               "line": 60
2026-06-19T23:28:15.6535636Z             },
2026-06-19T23:28:15.6535765Z             {
2026-06-19T23:28:15.6535932Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6536056Z               "line": 368
2026-06-19T23:28:15.6536186Z             },
2026-06-19T23:28:15.6536323Z             {
2026-06-19T23:28:15.6536503Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6536644Z               "line": 417
2026-06-19T23:28:15.6536778Z             },
2026-06-19T23:28:15.6536902Z             {
2026-06-19T23:28:15.6537073Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6537207Z               "line": 19
2026-06-19T23:28:15.6537335Z             },
2026-06-19T23:28:15.6537461Z             {
2026-06-19T23:28:15.6537631Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6537760Z               "line": 70
2026-06-19T23:28:15.6537879Z             },
2026-06-19T23:28:15.6538017Z             {
2026-06-19T23:28:15.6538175Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6538308Z               "line": 96
2026-06-19T23:28:15.6538438Z             },
2026-06-19T23:28:15.6538565Z             {
2026-06-19T23:28:15.6538715Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6538852Z               "line": 121
2026-06-19T23:28:15.6539061Z             },
2026-06-19T23:28:15.6539187Z             {
2026-06-19T23:28:15.6539349Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6539484Z               "line": 172
2026-06-19T23:28:15.6539596Z             },
2026-06-19T23:28:15.6539722Z             {
2026-06-19T23:28:15.6539883Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.6540013Z               "line": 178
2026-06-19T23:28:15.6540136Z             },
2026-06-19T23:28:15.6540264Z             {
2026-06-19T23:28:15.6540418Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6540564Z               "line": 1441
2026-06-19T23:28:15.6540695Z             }
2026-06-19T23:28:15.6540808Z           ]
2026-06-19T23:28:15.6540937Z         },
2026-06-19T23:28:15.6541061Z         "int": {
2026-06-19T23:28:15.6541199Z           "complete": false,
2026-06-19T23:28:15.6541334Z           "evidence": []
2026-06-19T23:28:15.6541572Z         },
2026-06-19T23:28:15.6541705Z         "unit": {
2026-06-19T23:28:15.6541837Z           "complete": true,
2026-06-19T23:28:15.6541966Z           "evidence": [
2026-06-19T23:28:15.6542090Z             {
2026-06-19T23:28:15.6542276Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6542410Z               "line": 577
2026-06-19T23:28:15.6542528Z             },
2026-06-19T23:28:15.6542653Z             {
2026-06-19T23:28:15.6542814Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.6542944Z               "line": 638
2026-06-19T23:28:15.6543072Z             },
2026-06-19T23:28:15.6543202Z             {
2026-06-19T23:28:15.6543468Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6543593Z               "line": 213
2026-06-19T23:28:15.6543721Z             },
2026-06-19T23:28:15.6543850Z             {
2026-06-19T23:28:15.6544015Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6544149Z               "line": 249
2026-06-19T23:28:15.6544276Z             },
2026-06-19T23:28:15.6544399Z             {
2026-06-19T23:28:15.6544557Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6544689Z               "line": 262
2026-06-19T23:28:15.6544814Z             },
2026-06-19T23:28:15.6544939Z             {
2026-06-19T23:28:15.6545095Z               "path": "crates/spt-store/src/home.rs",
2026-06-19T23:28:15.6545234Z               "line": 338
2026-06-19T23:28:15.6545367Z             },
2026-06-19T23:28:15.6545487Z             {
2026-06-19T23:28:15.6545648Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.6545783Z               "line": 686
2026-06-19T23:28:15.6545921Z             },
2026-06-19T23:28:15.6546044Z             {
2026-06-19T23:28:15.6546201Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6546340Z               "line": 7979
2026-06-19T23:28:15.6546455Z             },
2026-06-19T23:28:15.6546588Z             {
2026-06-19T23:28:15.6546742Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6546883Z               "line": 9809
2026-06-19T23:28:15.6546996Z             }
2026-06-19T23:28:15.6547125Z           ]
2026-06-19T23:28:15.6547252Z         }
2026-06-19T23:28:15.6547376Z       }
2026-06-19T23:28:15.6547505Z     },
2026-06-19T23:28:15.6547628Z     {
2026-06-19T23:28:15.6547758Z       "id": "REQ-INST-2",
2026-06-19T23:28:15.6547929Z       "title": "Per-node files, synced Psyche mind",
2026-06-19T23:28:15.6548072Z       "requiredStages": [
2026-06-19T23:28:15.6548205Z         "impl",
2026-06-19T23:28:15.6548330Z         "unit"
2026-06-19T23:28:15.6548458Z       ],
2026-06-19T23:28:15.6548591Z       "stages": {
2026-06-19T23:28:15.6548721Z         "doc": {
2026-06-19T23:28:15.6548863Z           "complete": false,
2026-06-19T23:28:15.6549073Z           "evidence": []
2026-06-19T23:28:15.6549198Z         },
2026-06-19T23:28:15.6549318Z         "impl": {
2026-06-19T23:28:15.6549468Z           "complete": true,
2026-06-19T23:28:15.6549601Z           "evidence": [
2026-06-19T23:28:15.6549733Z             {
2026-06-19T23:28:15.6549904Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6550039Z               "line": 108
2026-06-19T23:28:15.6550171Z             },
2026-06-19T23:28:15.6550296Z             {
2026-06-19T23:28:15.6550467Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.6550592Z               "line": 28
2026-06-19T23:28:15.6550725Z             },
2026-06-19T23:28:15.6550849Z             {
2026-06-19T23:28:15.6551016Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.6551144Z               "line": 74
2026-06-19T23:28:15.6551273Z             },
2026-06-19T23:28:15.6551397Z             {
2026-06-19T23:28:15.6551551Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.6551683Z               "line": 96
2026-06-19T23:28:15.6551808Z             },
2026-06-19T23:28:15.6551927Z             {
2026-06-19T23:28:15.6552093Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.6552350Z               "line": 86
2026-06-19T23:28:15.6552478Z             },
2026-06-19T23:28:15.6552603Z             {
2026-06-19T23:28:15.6552769Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-19T23:28:15.6552903Z               "line": 118
2026-06-19T23:28:15.6553021Z             }
2026-06-19T23:28:15.6553146Z           ]
2026-06-19T23:28:15.6553275Z         },
2026-06-19T23:28:15.6553399Z         "int": {
2026-06-19T23:28:15.6553528Z           "complete": false,
2026-06-19T23:28:15.6553656Z           "evidence": []
2026-06-19T23:28:15.6553776Z         },
2026-06-19T23:28:15.6553899Z         "unit": {
2026-06-19T23:28:15.6554143Z           "complete": true,
2026-06-19T23:28:15.6554276Z           "evidence": [
2026-06-19T23:28:15.6554406Z             {
2026-06-19T23:28:15.6554557Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-19T23:28:15.6554689Z               "line": 250
2026-06-19T23:28:15.6554818Z             },
2026-06-19T23:28:15.6554950Z             {
2026-06-19T23:28:15.6555108Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.6555235Z               "line": 280
2026-06-19T23:28:15.6555365Z             }
2026-06-19T23:28:15.6555489Z           ]
2026-06-19T23:28:15.6555612Z         }
2026-06-19T23:28:15.6555742Z       }
2026-06-19T23:28:15.6555865Z     },
2026-06-19T23:28:15.6555990Z     {
2026-06-19T23:28:15.6556123Z       "id": "REQ-INST-3",
2026-06-19T23:28:15.6556319Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-19T23:28:15.6556446Z       "requiredStages": [
2026-06-19T23:28:15.6556580Z         "doc",
2026-06-19T23:28:15.6556715Z         "impl",
2026-06-19T23:28:15.6556838Z         "unit"
2026-06-19T23:28:15.6556963Z       ],
2026-06-19T23:28:15.6557090Z       "stages": {
2026-06-19T23:28:15.6557225Z         "doc": {
2026-06-19T23:28:15.6557350Z           "complete": true,
2026-06-19T23:28:15.6557490Z           "evidence": [
2026-06-19T23:28:15.6557619Z             {
2026-06-19T23:28:15.6557778Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-19T23:28:15.6557917Z               "line": 3
2026-06-19T23:28:15.6558037Z             }
2026-06-19T23:28:15.6558165Z           ]
2026-06-19T23:28:15.6558290Z         },
2026-06-19T23:28:15.6558413Z         "impl": {
2026-06-19T23:28:15.6558552Z           "complete": true,
2026-06-19T23:28:15.6558690Z           "evidence": [
2026-06-19T23:28:15.6558818Z             {
2026-06-19T23:28:15.6559056Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-19T23:28:15.6559191Z               "line": 59
2026-06-19T23:28:15.6559314Z             },
2026-06-19T23:28:15.6563024Z             {
2026-06-19T23:28:15.6563253Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.6563392Z               "line": 480
2026-06-19T23:28:15.6563520Z             },
2026-06-19T23:28:15.6563644Z             {
2026-06-19T23:28:15.6563831Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6563964Z               "line": 254
2026-06-19T23:28:15.6564097Z             },
2026-06-19T23:28:15.6564225Z             {
2026-06-19T23:28:15.6564403Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6564540Z               "line": 384
2026-06-19T23:28:15.6564661Z             },
2026-06-19T23:28:15.6564779Z             {
2026-06-19T23:28:15.6564941Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6565074Z               "line": 418
2026-06-19T23:28:15.6565207Z             },
2026-06-19T23:28:15.6565331Z             {
2026-06-19T23:28:15.6565505Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-19T23:28:15.6565638Z               "line": 74
2026-06-19T23:28:15.6565772Z             },
2026-06-19T23:28:15.6565900Z             {
2026-06-19T23:28:15.6566087Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6566225Z               "line": 234
2026-06-19T23:28:15.6566349Z             },
2026-06-19T23:28:15.6566626Z             {
2026-06-19T23:28:15.6566801Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6566931Z               "line": 396
2026-06-19T23:28:15.6567064Z             },
2026-06-19T23:28:15.6567184Z             {
2026-06-19T23:28:15.6567364Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6567494Z               "line": 45
2026-06-19T23:28:15.6567623Z             },
2026-06-19T23:28:15.6567746Z             {
2026-06-19T23:28:15.6567914Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6568045Z               "line": 114
2026-06-19T23:28:15.6568174Z             },
2026-06-19T23:28:15.6568405Z             {
2026-06-19T23:28:15.6568563Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6568691Z               "line": 152
2026-06-19T23:28:15.6568816Z             },
2026-06-19T23:28:15.6569034Z             {
2026-06-19T23:28:15.6569193Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6569339Z               "line": 168
2026-06-19T23:28:15.6569465Z             },
2026-06-19T23:28:15.6569588Z             {
2026-06-19T23:28:15.6569746Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6569878Z               "line": 178
2026-06-19T23:28:15.6570013Z             },
2026-06-19T23:28:15.6570123Z             {
2026-06-19T23:28:15.6570289Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6570424Z               "line": 210
2026-06-19T23:28:15.6570546Z             },
2026-06-19T23:28:15.6570673Z             {
2026-06-19T23:28:15.6570835Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6570976Z               "line": 287
2026-06-19T23:28:15.6571106Z             },
2026-06-19T23:28:15.6571230Z             {
2026-06-19T23:28:15.6571388Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6571516Z               "line": 311
2026-06-19T23:28:15.6571649Z             },
2026-06-19T23:28:15.6571769Z             {
2026-06-19T23:28:15.6571935Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6572065Z               "line": 389
2026-06-19T23:28:15.6572188Z             },
2026-06-19T23:28:15.6572322Z             {
2026-06-19T23:28:15.6572488Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6572623Z               "line": 438
2026-06-19T23:28:15.6572746Z             },
2026-06-19T23:28:15.6572865Z             {
2026-06-19T23:28:15.6573037Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-19T23:28:15.6573170Z               "line": 37
2026-06-19T23:28:15.6573301Z             },
2026-06-19T23:28:15.6573427Z             {
2026-06-19T23:28:15.6573593Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6573719Z               "line": 62
2026-06-19T23:28:15.6573850Z             },
2026-06-19T23:28:15.6573981Z             {
2026-06-19T23:28:15.6574147Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.6574286Z               "line": 267
2026-06-19T23:28:15.6574414Z             },
2026-06-19T23:28:15.6574547Z             {
2026-06-19T23:28:15.6574695Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6574838Z               "line": 1820
2026-06-19T23:28:15.6574977Z             }
2026-06-19T23:28:15.6575096Z           ]
2026-06-19T23:28:15.6575221Z         },
2026-06-19T23:28:15.6575348Z         "int": {
2026-06-19T23:28:15.6575482Z           "complete": false,
2026-06-19T23:28:15.6575606Z           "evidence": []
2026-06-19T23:28:15.6575733Z         },
2026-06-19T23:28:15.6575863Z         "unit": {
2026-06-19T23:28:15.6576008Z           "complete": true,
2026-06-19T23:28:15.6576136Z           "evidence": [
2026-06-19T23:28:15.6576261Z             {
2026-06-19T23:28:15.6576427Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.6576557Z               "line": 360
2026-06-19T23:28:15.6576675Z             },
2026-06-19T23:28:15.6577000Z             {
2026-06-19T23:28:15.6577177Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6577310Z               "line": 837
2026-06-19T23:28:15.6577434Z             },
2026-06-19T23:28:15.6577563Z             {
2026-06-19T23:28:15.6577725Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6577844Z               "line": 894
2026-06-19T23:28:15.6577968Z             },
2026-06-19T23:28:15.6578088Z             {
2026-06-19T23:28:15.6578263Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6578393Z               "line": 889
2026-06-19T23:28:15.6578526Z             },
2026-06-19T23:28:15.6578748Z             {
2026-06-19T23:28:15.6578918Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6579138Z               "line": 1014
2026-06-19T23:28:15.6579265Z             },
2026-06-19T23:28:15.6579391Z             {
2026-06-19T23:28:15.6579570Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6579705Z               "line": 1264
2026-06-19T23:28:15.6579830Z             },
2026-06-19T23:28:15.6579953Z             {
2026-06-19T23:28:15.6580143Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6580268Z               "line": 1405
2026-06-19T23:28:15.6580397Z             },
2026-06-19T23:28:15.6580525Z             {
2026-06-19T23:28:15.6580698Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6580835Z               "line": 449
2026-06-19T23:28:15.6580960Z             },
2026-06-19T23:28:15.6581083Z             {
2026-06-19T23:28:15.6581248Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6581400Z               "line": 485
2026-06-19T23:28:15.6581523Z             },
2026-06-19T23:28:15.6581647Z             {
2026-06-19T23:28:15.6581808Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6581943Z               "line": 540
2026-06-19T23:28:15.6582067Z             },
2026-06-19T23:28:15.6582190Z             {
2026-06-19T23:28:15.6582362Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6582481Z               "line": 697
2026-06-19T23:28:15.6582611Z             },
2026-06-19T23:28:15.6582743Z             {
2026-06-19T23:28:15.6582897Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6583035Z               "line": 931
2026-06-19T23:28:15.6583158Z             },
2026-06-19T23:28:15.6583287Z             {
2026-06-19T23:28:15.6583449Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6583584Z               "line": 945
2026-06-19T23:28:15.6583716Z             },
2026-06-19T23:28:15.6583841Z             {
2026-06-19T23:28:15.6584016Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6584144Z               "line": 1290
2026-06-19T23:28:15.6584269Z             },
2026-06-19T23:28:15.6584397Z             {
2026-06-19T23:28:15.6584565Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.6584697Z               "line": 583
2026-06-19T23:28:15.6584813Z             },
2026-06-19T23:28:15.6584941Z             {
2026-06-19T23:28:15.6585089Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6585217Z               "line": 8003
2026-06-19T23:28:15.6585346Z             }
2026-06-19T23:28:15.6585476Z           ]
2026-06-19T23:28:15.6585599Z         }
2026-06-19T23:28:15.6585723Z       }
2026-06-19T23:28:15.6585852Z     },
2026-06-19T23:28:15.6585980Z     {
2026-06-19T23:28:15.6586120Z       "id": "REQ-INST-4",
2026-06-19T23:28:15.6586355Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-19T23:28:15.6586507Z       "requiredStages": [
2026-06-19T23:28:15.6586648Z         "impl",
2026-06-19T23:28:15.6586764Z         "unit"
2026-06-19T23:28:15.6586883Z       ],
2026-06-19T23:28:15.6587007Z       "stages": {
2026-06-19T23:28:15.6587141Z         "doc": {
2026-06-19T23:28:15.6587273Z           "complete": false,
2026-06-19T23:28:15.6587517Z           "evidence": []
2026-06-19T23:28:15.6587646Z         },
2026-06-19T23:28:15.6587775Z         "impl": {
2026-06-19T23:28:15.6587912Z           "complete": true,
2026-06-19T23:28:15.6588037Z           "evidence": [
2026-06-19T23:28:15.6588156Z             {
2026-06-19T23:28:15.6588334Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6588466Z               "line": 385
2026-06-19T23:28:15.6588590Z             },
2026-06-19T23:28:15.6588715Z             {
2026-06-19T23:28:15.6588885Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6589095Z               "line": 202
2026-06-19T23:28:15.6589342Z             },
2026-06-19T23:28:15.6589469Z             {
2026-06-19T23:28:15.6589635Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6589760Z               "line": 234
2026-06-19T23:28:15.6589883Z             },
2026-06-19T23:28:15.6590013Z             {
2026-06-19T23:28:15.6590188Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6590323Z               "line": 274
2026-06-19T23:28:15.6590450Z             }
2026-06-19T23:28:15.6590576Z           ]
2026-06-19T23:28:15.6590698Z         },
2026-06-19T23:28:15.6590823Z         "int": {
2026-06-19T23:28:15.6590967Z           "complete": false,
2026-06-19T23:28:15.6591099Z           "evidence": []
2026-06-19T23:28:15.6591229Z         },
2026-06-19T23:28:15.6591342Z         "unit": {
2026-06-19T23:28:15.6591472Z           "complete": true,
2026-06-19T23:28:15.6591606Z           "evidence": [
2026-06-19T23:28:15.6591732Z             {
2026-06-19T23:28:15.6591909Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6592035Z               "line": 889
2026-06-19T23:28:15.6592164Z             },
2026-06-19T23:28:15.6592289Z             {
2026-06-19T23:28:15.6592455Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6592584Z               "line": 561
2026-06-19T23:28:15.6592707Z             },
2026-06-19T23:28:15.6592823Z             {
2026-06-19T23:28:15.6592989Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6593109Z               "line": 668
2026-06-19T23:28:15.6593236Z             },
2026-06-19T23:28:15.6593365Z             {
2026-06-19T23:28:15.6593538Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6593670Z               "line": 750
2026-06-19T23:28:15.6593796Z             }
2026-06-19T23:28:15.6593918Z           ]
2026-06-19T23:28:15.6594043Z         }
2026-06-19T23:28:15.6594163Z       }
2026-06-19T23:28:15.6594281Z     },
2026-06-19T23:28:15.6594406Z     {
2026-06-19T23:28:15.6594543Z       "id": "REQ-INST-5",
2026-06-19T23:28:15.6594786Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-19T23:28:15.6594928Z       "requiredStages": [
2026-06-19T23:28:15.6595053Z         "impl",
2026-06-19T23:28:15.6595186Z         "unit",
2026-06-19T23:28:15.6595309Z         "int"
2026-06-19T23:28:15.6595439Z       ],
2026-06-19T23:28:15.6595567Z       "stages": {
2026-06-19T23:28:15.6595697Z         "doc": {
2026-06-19T23:28:15.6595830Z           "complete": false,
2026-06-19T23:28:15.6595963Z           "evidence": []
2026-06-19T23:28:15.6596097Z         },
2026-06-19T23:28:15.6596230Z         "impl": {
2026-06-19T23:28:15.6596370Z           "complete": true,
2026-06-19T23:28:15.6596497Z           "evidence": [
2026-06-19T23:28:15.6596627Z             {
2026-06-19T23:28:15.6596802Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-19T23:28:15.6596935Z               "line": 85
2026-06-19T23:28:15.6597058Z             },
2026-06-19T23:28:15.6597194Z             {
2026-06-19T23:28:15.6597353Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6597481Z               "line": 68
2026-06-19T23:28:15.6597605Z             },
2026-06-19T23:28:15.6597729Z             {
2026-06-19T23:28:15.6597896Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6598139Z               "line": 99
2026-06-19T23:28:15.6598264Z             },
2026-06-19T23:28:15.6598392Z             {
2026-06-19T23:28:15.6598544Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6598687Z               "line": 183
2026-06-19T23:28:15.6598815Z             },
2026-06-19T23:28:15.6599016Z             {
2026-06-19T23:28:15.6599184Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6599312Z               "line": 314
2026-06-19T23:28:15.6599470Z             }
2026-06-19T23:28:15.6599594Z           ]
2026-06-19T23:28:15.6599721Z         },
2026-06-19T23:28:15.6599845Z         "int": {
2026-06-19T23:28:15.6600095Z           "complete": true,
2026-06-19T23:28:15.6600215Z           "evidence": [
2026-06-19T23:28:15.6600339Z             {
2026-06-19T23:28:15.6600511Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.6600644Z               "line": 156
2026-06-19T23:28:15.6600763Z             },
2026-06-19T23:28:15.6600892Z             {
2026-06-19T23:28:15.6601053Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-19T23:28:15.6601183Z               "line": 145
2026-06-19T23:28:15.6601307Z             },
2026-06-19T23:28:15.6601436Z             {
2026-06-19T23:28:15.6601606Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.6601741Z               "line": 707
2026-06-19T23:28:15.6601856Z             },
2026-06-19T23:28:15.6601970Z             {
2026-06-19T23:28:15.6602147Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.6602278Z               "line": 1069
2026-06-19T23:28:15.6602412Z             }
2026-06-19T23:28:15.6602534Z           ]
2026-06-19T23:28:15.6602667Z         },
2026-06-19T23:28:15.6602792Z         "unit": {
2026-06-19T23:28:15.6602924Z           "complete": true,
2026-06-19T23:28:15.6603049Z           "evidence": [
2026-06-19T23:28:15.6603173Z             {
2026-06-19T23:28:15.6603334Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6603468Z               "line": 552
2026-06-19T23:28:15.6603596Z             },
2026-06-19T23:28:15.6603721Z             {
2026-06-19T23:28:15.6603878Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6604012Z               "line": 595
2026-06-19T23:28:15.6604135Z             },
2026-06-19T23:28:15.6604260Z             {
2026-06-19T23:28:15.6604431Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-19T23:28:15.6604555Z               "line": 219
2026-06-19T23:28:15.6604671Z             }
2026-06-19T23:28:15.6604802Z           ]
2026-06-19T23:28:15.6604928Z         }
2026-06-19T23:28:15.6605057Z       }
2026-06-19T23:28:15.6605184Z     },
2026-06-19T23:28:15.6605308Z     {
2026-06-19T23:28:15.6605432Z       "id": "REQ-INST-6",
2026-06-19T23:28:15.6605670Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-19T23:28:15.6605822Z       "requiredStages": [
2026-06-19T23:28:15.6605957Z         "impl",
2026-06-19T23:28:15.6606080Z         "unit",
2026-06-19T23:28:15.6606204Z         "int"
2026-06-19T23:28:15.6606328Z       ],
2026-06-19T23:28:15.6606461Z       "stages": {
2026-06-19T23:28:15.6606586Z         "doc": {
2026-06-19T23:28:15.6606724Z           "complete": true,
2026-06-19T23:28:15.6606853Z           "evidence": [
2026-06-19T23:28:15.6606981Z             {
2026-06-19T23:28:15.6607134Z               "path": "docs/DEFERRED.md",
2026-06-19T23:28:15.6607259Z               "line": 13
2026-06-19T23:28:15.6607386Z             }
2026-06-19T23:28:15.6607509Z           ]
2026-06-19T23:28:15.6607637Z         },
2026-06-19T23:28:15.6607759Z         "impl": {
2026-06-19T23:28:15.6607903Z           "complete": true,
2026-06-19T23:28:15.6608022Z           "evidence": [
2026-06-19T23:28:15.6608151Z             {
2026-06-19T23:28:15.6608322Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.6608451Z               "line": 391
2026-06-19T23:28:15.6608580Z             },
2026-06-19T23:28:15.6608824Z             {
2026-06-19T23:28:15.6609085Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-19T23:28:15.6609223Z               "line": 27
2026-06-19T23:28:15.6609357Z             },
2026-06-19T23:28:15.6609482Z             {
2026-06-19T23:28:15.6609648Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-19T23:28:15.6609778Z               "line": 73
2026-06-19T23:28:15.6609910Z             },
2026-06-19T23:28:15.6610030Z             {
2026-06-19T23:28:15.6610201Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-19T23:28:15.6610338Z               "line": 182
2026-06-19T23:28:15.6610476Z             },
2026-06-19T23:28:15.6610713Z             {
2026-06-19T23:28:15.6610880Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6611013Z               "line": 426
2026-06-19T23:28:15.6611142Z             },
2026-06-19T23:28:15.6611270Z             {
2026-06-19T23:28:15.6611424Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-19T23:28:15.6611566Z               "line": 31
2026-06-19T23:28:15.6611696Z             },
2026-06-19T23:28:15.6611819Z             {
2026-06-19T23:28:15.6611991Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.6612119Z               "line": 202
2026-06-19T23:28:15.6612248Z             },
2026-06-19T23:28:15.6612373Z             {
2026-06-19T23:28:15.6612535Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.6612660Z               "line": 83
2026-06-19T23:28:15.6612787Z             },
2026-06-19T23:28:15.6612919Z             {
2026-06-19T23:28:15.6613071Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6613217Z               "line": 1821
2026-06-19T23:28:15.6613342Z             },
2026-06-19T23:28:15.6613470Z             {
2026-06-19T23:28:15.6613628Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.6613757Z               "line": 179
2026-06-19T23:28:15.6613885Z             },
2026-06-19T23:28:15.6614010Z             {
2026-06-19T23:28:15.6614170Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.6614301Z               "line": 215
2026-06-19T23:28:15.6614429Z             }
2026-06-19T23:28:15.6614563Z           ]
2026-06-19T23:28:15.6614686Z         },
2026-06-19T23:28:15.6614810Z         "int": {
2026-06-19T23:28:15.6614949Z           "complete": true,
2026-06-19T23:28:15.6615087Z           "evidence": [
2026-06-19T23:28:15.6615212Z             {
2026-06-19T23:28:15.6615387Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.6615522Z               "line": 721
2026-06-19T23:28:15.6615645Z             },
2026-06-19T23:28:15.6615782Z             {
2026-06-19T23:28:15.6615960Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.6616120Z               "line": 1114
2026-06-19T23:28:15.6616245Z             },
2026-06-19T23:28:15.6616372Z             {
2026-06-19T23:28:15.6616531Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.6616664Z               "line": 726
2026-06-19T23:28:15.6616798Z             }
2026-06-19T23:28:15.6616921Z           ]
2026-06-19T23:28:15.6617060Z         },
2026-06-19T23:28:15.6617185Z         "unit": {
2026-06-19T23:28:15.6617326Z           "complete": true,
2026-06-19T23:28:15.6617456Z           "evidence": [
2026-06-19T23:28:15.6617583Z             {
2026-06-19T23:28:15.6617747Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.6617870Z               "line": 661
2026-06-19T23:28:15.6618002Z             },
2026-06-19T23:28:15.6618132Z             {
2026-06-19T23:28:15.6618306Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.6618449Z               "line": 899
2026-06-19T23:28:15.6618577Z             },
2026-06-19T23:28:15.6618697Z             {
2026-06-19T23:28:15.6618859Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-19T23:28:15.6619055Z               "line": 66
2026-06-19T23:28:15.6619174Z             },
2026-06-19T23:28:15.6619403Z             {
2026-06-19T23:28:15.6619569Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.6619694Z               "line": 297
2026-06-19T23:28:15.6619822Z             },
2026-06-19T23:28:15.6619950Z             {
2026-06-19T23:28:15.6620117Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.6620256Z               "line": 203
2026-06-19T23:28:15.6620372Z             }
2026-06-19T23:28:15.6620494Z           ]
2026-06-19T23:28:15.6620619Z         }
2026-06-19T23:28:15.6620738Z       }
2026-06-19T23:28:15.6620865Z     },
2026-06-19T23:28:15.6620994Z     {
2026-06-19T23:28:15.6621125Z       "id": "REQ-INST-7",
2026-06-19T23:28:15.6621421Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-19T23:28:15.6621563Z       "requiredStages": [
2026-06-19T23:28:15.6621688Z         "impl",
2026-06-19T23:28:15.6621816Z         "unit",
2026-06-19T23:28:15.6621942Z         "int"
2026-06-19T23:28:15.6622065Z       ],
2026-06-19T23:28:15.6622198Z       "stages": {
2026-06-19T23:28:15.6622332Z         "doc": {
2026-06-19T23:28:15.6622479Z           "complete": false,
2026-06-19T23:28:15.6622600Z           "evidence": []
2026-06-19T23:28:15.6622727Z         },
2026-06-19T23:28:15.6622852Z         "impl": {
2026-06-19T23:28:15.6622994Z           "complete": true,
2026-06-19T23:28:15.6623128Z           "evidence": [
2026-06-19T23:28:15.6623239Z             {
2026-06-19T23:28:15.6623417Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.6623556Z               "line": 436
2026-06-19T23:28:15.6623678Z             },
2026-06-19T23:28:15.6623806Z             {
2026-06-19T23:28:15.6623997Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6624126Z               "line": 27
2026-06-19T23:28:15.6624255Z             },
2026-06-19T23:28:15.6624383Z             {
2026-06-19T23:28:15.6624560Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6624693Z               "line": 207
2026-06-19T23:28:15.6624832Z             },
2026-06-19T23:28:15.6624965Z             {
2026-06-19T23:28:15.6625147Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6625280Z               "line": 344
2026-06-19T23:28:15.6625413Z             },
2026-06-19T23:28:15.6625537Z             {
2026-06-19T23:28:15.6625709Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-19T23:28:15.6625843Z               "line": 59
2026-06-19T23:28:15.6625971Z             },
2026-06-19T23:28:15.6626110Z             {
2026-06-19T23:28:15.6626280Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6626423Z               "line": 41
2026-06-19T23:28:15.6626552Z             },
2026-06-19T23:28:15.6626680Z             {
2026-06-19T23:28:15.6626853Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.6626990Z               "line": 27
2026-06-19T23:28:15.6627125Z             },
2026-06-19T23:28:15.6627238Z             {
2026-06-19T23:28:15.6627420Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.6627549Z               "line": 119
2026-06-19T23:28:15.6627673Z             },
2026-06-19T23:28:15.6627792Z             {
2026-06-19T23:28:15.6627958Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.6628102Z               "line": 134
2026-06-19T23:28:15.6628225Z             },
2026-06-19T23:28:15.6628355Z             {
2026-06-19T23:28:15.6628525Z               "path": "crates/spt-store/src/registry.rs",
2026-06-19T23:28:15.6628658Z               "line": 139
2026-06-19T23:28:15.6628781Z             }
2026-06-19T23:28:15.6628917Z           ]
2026-06-19T23:28:15.6629096Z         },
2026-06-19T23:28:15.6629223Z         "int": {
2026-06-19T23:28:15.6629367Z           "complete": true,
2026-06-19T23:28:15.6629490Z           "evidence": [
2026-06-19T23:28:15.6629625Z             {
2026-06-19T23:28:15.6629795Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-19T23:28:15.6630048Z               "line": 145
2026-06-19T23:28:15.6630182Z             },
2026-06-19T23:28:15.6630311Z             {
2026-06-19T23:28:15.6630482Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.6630607Z               "line": 665
2026-06-19T23:28:15.6630730Z             },
2026-06-19T23:28:15.6630855Z             {
2026-06-19T23:28:15.6631030Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.6631170Z               "line": 964
2026-06-19T23:28:15.6631284Z             }
2026-06-19T23:28:15.6631402Z           ]
2026-06-19T23:28:15.6631525Z         },
2026-06-19T23:28:15.6631657Z         "unit": {
2026-06-19T23:28:15.6631900Z           "complete": true,
2026-06-19T23:28:15.6632042Z           "evidence": [
2026-06-19T23:28:15.6632162Z             {
2026-06-19T23:28:15.6632343Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6632472Z               "line": 1134
2026-06-19T23:28:15.6632596Z             },
2026-06-19T23:28:15.6632734Z             {
2026-06-19T23:28:15.6632915Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6633058Z               "line": 1521
2026-06-19T23:28:15.6633188Z             },
2026-06-19T23:28:15.6633311Z             {
2026-06-19T23:28:15.6633503Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-19T23:28:15.6633630Z               "line": 84
2026-06-19T23:28:15.6633760Z             },
2026-06-19T23:28:15.6633897Z             {
2026-06-19T23:28:15.6634077Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6634200Z               "line": 812
2026-06-19T23:28:15.6634332Z             },
2026-06-19T23:28:15.6634467Z             {
2026-06-19T23:28:15.6634642Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6634782Z               "line": 823
2026-06-19T23:28:15.6634919Z             },
2026-06-19T23:28:15.6635044Z             {
2026-06-19T23:28:15.6635220Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6635359Z               "line": 838
2026-06-19T23:28:15.6635482Z             },
2026-06-19T23:28:15.6635610Z             {
2026-06-19T23:28:15.6635788Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.6635916Z               "line": 166
2026-06-19T23:28:15.6636036Z             },
2026-06-19T23:28:15.6636168Z             {
2026-06-19T23:28:15.6636337Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.6636478Z               "line": 181
2026-06-19T23:28:15.6636604Z             },
2026-06-19T23:28:15.6636737Z             {
2026-06-19T23:28:15.6636911Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.6637051Z               "line": 214
2026-06-19T23:28:15.6637178Z             }
2026-06-19T23:28:15.6637294Z           ]
2026-06-19T23:28:15.6637418Z         }
2026-06-19T23:28:15.6637540Z       }
2026-06-19T23:28:15.6637671Z     },
2026-06-19T23:28:15.6637798Z     {
2026-06-19T23:28:15.6637933Z       "id": "REQ-INST-8",
2026-06-19T23:28:15.6638151Z       "title": "Remote-control mode distinct from local operation",
2026-06-19T23:28:15.6638286Z       "requiredStages": [
2026-06-19T23:28:15.6638414Z         "impl",
2026-06-19T23:28:15.6638538Z         "unit",
2026-06-19T23:28:15.6638667Z         "int"
2026-06-19T23:28:15.6638794Z       ],
2026-06-19T23:28:15.6638925Z       "stages": {
2026-06-19T23:28:15.6639146Z         "doc": {
2026-06-19T23:28:15.6639280Z           "complete": false,
2026-06-19T23:28:15.6639411Z           "evidence": []
2026-06-19T23:28:15.6639536Z         },
2026-06-19T23:28:15.6639669Z         "impl": {
2026-06-19T23:28:15.6639817Z           "complete": true,
2026-06-19T23:28:15.6639946Z           "evidence": [
2026-06-19T23:28:15.6640064Z             {
2026-06-19T23:28:15.6640233Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-19T23:28:15.6640360Z               "line": 104
2026-06-19T23:28:15.6640485Z             },
2026-06-19T23:28:15.6640703Z             {
2026-06-19T23:28:15.6640886Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-19T23:28:15.6641008Z               "line": 321
2026-06-19T23:28:15.6641134Z             },
2026-06-19T23:28:15.6641261Z             {
2026-06-19T23:28:15.6641435Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-19T23:28:15.6641567Z               "line": 361
2026-06-19T23:28:15.6641686Z             },
2026-06-19T23:28:15.6641821Z             {
2026-06-19T23:28:15.6641981Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.6642109Z               "line": 62
2026-06-19T23:28:15.6642236Z             }
2026-06-19T23:28:15.6642470Z           ]
2026-06-19T23:28:15.6642598Z         },
2026-06-19T23:28:15.6642737Z         "int": {
2026-06-19T23:28:15.6642870Z           "complete": true,
2026-06-19T23:28:15.6643003Z           "evidence": [
2026-06-19T23:28:15.6643127Z             {
2026-06-19T23:28:15.6643303Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.6643447Z               "line": 415
2026-06-19T23:28:15.6643571Z             },
2026-06-19T23:28:15.6643701Z             {
2026-06-19T23:28:15.6643880Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.6644011Z               "line": 1028
2026-06-19T23:28:15.6644138Z             }
2026-06-19T23:28:15.6644258Z           ]
2026-06-19T23:28:15.6644383Z         },
2026-06-19T23:28:15.6644500Z         "unit": {
2026-06-19T23:28:15.6644642Z           "complete": true,
2026-06-19T23:28:15.6644784Z           "evidence": [
2026-06-19T23:28:15.6644902Z             {
2026-06-19T23:28:15.6645080Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.6645221Z               "line": 366
2026-06-19T23:28:15.6645351Z             },
2026-06-19T23:28:15.6645479Z             {
2026-06-19T23:28:15.6645656Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.6645794Z               "line": 633
2026-06-19T23:28:15.6645929Z             },
2026-06-19T23:28:15.6646061Z             {
2026-06-19T23:28:15.6646228Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.6646366Z               "line": 116
2026-06-19T23:28:15.6646486Z             },
2026-06-19T23:28:15.6646615Z             {
2026-06-19T23:28:15.6646791Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.6646921Z               "line": 160
2026-06-19T23:28:15.6647053Z             }
2026-06-19T23:28:15.6647173Z           ]
2026-06-19T23:28:15.6647306Z         }
2026-06-19T23:28:15.6647428Z       }
2026-06-19T23:28:15.6647558Z     },
2026-06-19T23:28:15.6647686Z     {
2026-06-19T23:28:15.6647829Z       "id": "REQ-INST-9",
2026-06-19T23:28:15.6648072Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-19T23:28:15.6648211Z       "requiredStages": [
2026-06-19T23:28:15.6648344Z         "impl",
2026-06-19T23:28:15.6648473Z         "unit"
2026-06-19T23:28:15.6648602Z       ],
2026-06-19T23:28:15.6648730Z       "stages": {
2026-06-19T23:28:15.6648851Z         "doc": {
2026-06-19T23:28:15.6649049Z           "complete": false,
2026-06-19T23:28:15.6649189Z           "evidence": []
2026-06-19T23:28:15.6649312Z         },
2026-06-19T23:28:15.6649437Z         "impl": {
2026-06-19T23:28:15.6649579Z           "complete": true,
2026-06-19T23:28:15.6649707Z           "evidence": [
2026-06-19T23:28:15.6649836Z             {
2026-06-19T23:28:15.6650009Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6650134Z               "line": 449
2026-06-19T23:28:15.6650258Z             }
2026-06-19T23:28:15.6650377Z           ]
2026-06-19T23:28:15.6650506Z         },
2026-06-19T23:28:15.6650629Z         "int": {
2026-06-19T23:28:15.6650774Z           "complete": false,
2026-06-19T23:28:15.6650911Z           "evidence": []
2026-06-19T23:28:15.6651031Z         },
2026-06-19T23:28:15.6651159Z         "unit": {
2026-06-19T23:28:15.6651297Z           "complete": true,
2026-06-19T23:28:15.6651541Z           "evidence": [
2026-06-19T23:28:15.6651665Z             {
2026-06-19T23:28:15.6651835Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6651970Z               "line": 1397
2026-06-19T23:28:15.6652090Z             },
2026-06-19T23:28:15.6652217Z             {
2026-06-19T23:28:15.6652386Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6652517Z               "line": 1406
2026-06-19T23:28:15.6652641Z             },
2026-06-19T23:28:15.6652768Z             {
2026-06-19T23:28:15.6652944Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6653078Z               "line": 1422
2026-06-19T23:28:15.6653307Z             },
2026-06-19T23:28:15.6653431Z             {
2026-06-19T23:28:15.6653602Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6653731Z               "line": 1434
2026-06-19T23:28:15.6653854Z             },
2026-06-19T23:28:15.6653989Z             {
2026-06-19T23:28:15.6654164Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.6654299Z               "line": 1454
2026-06-19T23:28:15.6654427Z             }
2026-06-19T23:28:15.6654552Z           ]
2026-06-19T23:28:15.6654674Z         }
2026-06-19T23:28:15.6654794Z       }
2026-06-19T23:28:15.6658171Z     },
2026-06-19T23:28:15.6658327Z     {
2026-06-19T23:28:15.6658476Z       "id": "REQ-INSTALL-1",
2026-06-19T23:28:15.6658734Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-19T23:28:15.6658876Z       "requiredStages": [
2026-06-19T23:28:15.6659086Z         "doc",
2026-06-19T23:28:15.6659210Z         "impl",
2026-06-19T23:28:15.6659353Z         "int"
2026-06-19T23:28:15.6659481Z       ],
2026-06-19T23:28:15.6659614Z       "stages": {
2026-06-19T23:28:15.6659744Z         "doc": {
2026-06-19T23:28:15.6659877Z           "complete": true,
2026-06-19T23:28:15.6660012Z           "evidence": [
2026-06-19T23:28:15.6660134Z             {
2026-06-19T23:28:15.6660281Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6660405Z               "line": 754
2026-06-19T23:28:15.6660527Z             }
2026-06-19T23:28:15.6660656Z           ]
2026-06-19T23:28:15.6660781Z         },
2026-06-19T23:28:15.6660908Z         "impl": {
2026-06-19T23:28:15.6661038Z           "complete": true,
2026-06-19T23:28:15.6661161Z           "evidence": [
2026-06-19T23:28:15.6661286Z             {
2026-06-19T23:28:15.6661452Z               "path": "installer/install.ps1",
2026-06-19T23:28:15.6661586Z               "line": 57
2026-06-19T23:28:15.6661710Z             },
2026-06-19T23:28:15.6661833Z             {
2026-06-19T23:28:15.6661977Z               "path": "installer/install.sh",
2026-06-19T23:28:15.6662120Z               "line": 52
2026-06-19T23:28:15.6662245Z             }
2026-06-19T23:28:15.6662372Z           ]
2026-06-19T23:28:15.6662496Z         },
2026-06-19T23:28:15.6662626Z         "int": {
2026-06-19T23:28:15.6662759Z           "complete": true,
2026-06-19T23:28:15.6662884Z           "evidence": [
2026-06-19T23:28:15.6663011Z             {
2026-06-19T23:28:15.6663191Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-19T23:28:15.6663319Z               "line": 21
2026-06-19T23:28:15.6663446Z             }
2026-06-19T23:28:15.6663566Z           ]
2026-06-19T23:28:15.6663685Z         },
2026-06-19T23:28:15.6663799Z         "unit": {
2026-06-19T23:28:15.6663947Z           "complete": false,
2026-06-19T23:28:15.6664075Z           "evidence": []
2026-06-19T23:28:15.6664206Z         }
2026-06-19T23:28:15.6664325Z       }
2026-06-19T23:28:15.6664453Z     },
2026-06-19T23:28:15.6664568Z     {
2026-06-19T23:28:15.6664710Z       "id": "REQ-INSTALL-10",
2026-06-19T23:28:15.6666219Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-19T23:28:15.6666519Z       "requiredStages": [
2026-06-19T23:28:15.6666638Z         "impl",
2026-06-19T23:28:15.6666768Z         "unit"
2026-06-19T23:28:15.6666895Z       ],
2026-06-19T23:28:15.6667030Z       "stages": {
2026-06-19T23:28:15.6667153Z         "doc": {
2026-06-19T23:28:15.6667301Z           "complete": false,
2026-06-19T23:28:15.6667435Z           "evidence": []
2026-06-19T23:28:15.6667558Z         },
2026-06-19T23:28:15.6667688Z         "impl": {
2026-06-19T23:28:15.6667815Z           "complete": true,
2026-06-19T23:28:15.6668051Z           "evidence": [
2026-06-19T23:28:15.6668178Z             {
2026-06-19T23:28:15.6668342Z               "path": "installer/install.ps1",
2026-06-19T23:28:15.6668477Z               "line": 191
2026-06-19T23:28:15.6668601Z             }
2026-06-19T23:28:15.6668731Z           ]
2026-06-19T23:28:15.6668854Z         },
2026-06-19T23:28:15.6669064Z         "int": {
2026-06-19T23:28:15.6669202Z           "complete": false,
2026-06-19T23:28:15.6669336Z           "evidence": []
2026-06-19T23:28:15.6669460Z         },
2026-06-19T23:28:15.6669589Z         "unit": {
2026-06-19T23:28:15.6669732Z           "complete": true,
2026-06-19T23:28:15.6669860Z           "evidence": [
2026-06-19T23:28:15.6669985Z             {
2026-06-19T23:28:15.6670151Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-19T23:28:15.6670281Z               "line": 211
2026-06-19T23:28:15.6670413Z             }
2026-06-19T23:28:15.6670533Z           ]
2026-06-19T23:28:15.6670652Z         }
2026-06-19T23:28:15.6670779Z       }
2026-06-19T23:28:15.6670909Z     },
2026-06-19T23:28:15.6671030Z     {
2026-06-19T23:28:15.6671177Z       "id": "REQ-INSTALL-11",
2026-06-19T23:28:15.6673056Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-19T23:28:15.6673219Z       "requiredStages": [
2026-06-19T23:28:15.6673343Z         "doc",
2026-06-19T23:28:15.6673468Z         "impl",
2026-06-19T23:28:15.6673595Z         "unit"
2026-06-19T23:28:15.6673723Z       ],
2026-06-19T23:28:15.6673860Z       "stages": {
2026-06-19T23:28:15.6673982Z         "doc": {
2026-06-19T23:28:15.6674116Z           "complete": true,
2026-06-19T23:28:15.6674241Z           "evidence": [
2026-06-19T23:28:15.6674369Z             {
2026-06-19T23:28:15.6674517Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6674645Z               "line": 138
2026-06-19T23:28:15.6674770Z             },
2026-06-19T23:28:15.6674899Z             {
2026-06-19T23:28:15.6675032Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.6675170Z               "line": 82
2026-06-19T23:28:15.6675294Z             }
2026-06-19T23:28:15.6675419Z           ]
2026-06-19T23:28:15.6675537Z         },
2026-06-19T23:28:15.6675667Z         "impl": {
2026-06-19T23:28:15.6675805Z           "complete": true,
2026-06-19T23:28:15.6675933Z           "evidence": [
2026-06-19T23:28:15.6676068Z             {
2026-06-19T23:28:15.6676233Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.6676375Z               "line": 223
2026-06-19T23:28:15.6676506Z             },
2026-06-19T23:28:15.6676631Z             {
2026-06-19T23:28:15.6676812Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6676950Z               "line": 99
2026-06-19T23:28:15.6677089Z             },
2026-06-19T23:28:15.6677212Z             {
2026-06-19T23:28:15.6677527Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.6677657Z               "line": 117
2026-06-19T23:28:15.6677780Z             },
2026-06-19T23:28:15.6677909Z             {
2026-06-19T23:28:15.6678081Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-19T23:28:15.6678214Z               "line": 332
2026-06-19T23:28:15.6678333Z             },
2026-06-19T23:28:15.6678456Z             {
2026-06-19T23:28:15.6678616Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.6678743Z               "line": 88
2026-06-19T23:28:15.6678873Z             },
2026-06-19T23:28:15.6679081Z             {
2026-06-19T23:28:15.6679339Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.6679471Z               "line": 104
2026-06-19T23:28:15.6679586Z             },
2026-06-19T23:28:15.6679714Z             {
2026-06-19T23:28:15.6679887Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6680020Z               "line": 297
2026-06-19T23:28:15.6680139Z             },
2026-06-19T23:28:15.6680273Z             {
2026-06-19T23:28:15.6680444Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6680569Z               "line": 332
2026-06-19T23:28:15.6680697Z             },
2026-06-19T23:28:15.6680822Z             {
2026-06-19T23:28:15.6680992Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6681127Z               "line": 523
2026-06-19T23:28:15.6681249Z             },
2026-06-19T23:28:15.6681373Z             {
2026-06-19T23:28:15.6681534Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6681661Z               "line": 546
2026-06-19T23:28:15.6681781Z             },
2026-06-19T23:28:15.6681909Z             {
2026-06-19T23:28:15.6682071Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6682201Z               "line": 561
2026-06-19T23:28:15.6682333Z             },
2026-06-19T23:28:15.6682458Z             {
2026-06-19T23:28:15.6682625Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.6682750Z               "line": 492
2026-06-19T23:28:15.6682878Z             }
2026-06-19T23:28:15.6683001Z           ]
2026-06-19T23:28:15.6683121Z         },
2026-06-19T23:28:15.6683249Z         "int": {
2026-06-19T23:28:15.6683384Z           "complete": false,
2026-06-19T23:28:15.6683511Z           "evidence": []
2026-06-19T23:28:15.6683631Z         },
2026-06-19T23:28:15.6683765Z         "unit": {
2026-06-19T23:28:15.6683903Z           "complete": true,
2026-06-19T23:28:15.6684042Z           "evidence": [
2026-06-19T23:28:15.6684160Z             {
2026-06-19T23:28:15.6684331Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6684467Z               "line": 799
2026-06-19T23:28:15.6684590Z             },
2026-06-19T23:28:15.6684720Z             {
2026-06-19T23:28:15.6684890Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6685016Z               "line": 811
2026-06-19T23:28:15.6685153Z             },
2026-06-19T23:28:15.6685268Z             {
2026-06-19T23:28:15.6685440Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.6685573Z               "line": 820
2026-06-19T23:28:15.6685693Z             }
2026-06-19T23:28:15.6685811Z           ]
2026-06-19T23:28:15.6685941Z         }
2026-06-19T23:28:15.6686069Z       }
2026-06-19T23:28:15.6686183Z     },
2026-06-19T23:28:15.6686303Z     {
2026-06-19T23:28:15.6686441Z       "id": "REQ-INSTALL-12",
2026-06-19T23:28:15.6689227Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-19T23:28:15.6689514Z       "requiredStages": [
2026-06-19T23:28:15.6689645Z         "doc",
2026-06-19T23:28:15.6689769Z         "impl",
2026-06-19T23:28:15.6689899Z         "unit",
2026-06-19T23:28:15.6690017Z         "int"
2026-06-19T23:28:15.6690237Z       ],
2026-06-19T23:28:15.6690370Z       "stages": {
2026-06-19T23:28:15.6690499Z         "doc": {
2026-06-19T23:28:15.6690637Z           "complete": true,
2026-06-19T23:28:15.6690772Z           "evidence": [
2026-06-19T23:28:15.6690895Z             {
2026-06-19T23:28:15.6691038Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6691181Z               "line": 185
2026-06-19T23:28:15.6691300Z             }
2026-06-19T23:28:15.6691439Z           ]
2026-06-19T23:28:15.6691553Z         },
2026-06-19T23:28:15.6691678Z         "impl": {
2026-06-19T23:28:15.6691824Z           "complete": true,
2026-06-19T23:28:15.6691952Z           "evidence": [
2026-06-19T23:28:15.6692076Z             {
2026-06-19T23:28:15.6692250Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6692379Z               "line": 27
2026-06-19T23:28:15.6692503Z             },
2026-06-19T23:28:15.6692632Z             {
2026-06-19T23:28:15.6692808Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6692947Z               "line": 223
2026-06-19T23:28:15.6693071Z             },
2026-06-19T23:28:15.6693199Z             {
2026-06-19T23:28:15.6693352Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6693480Z               "line": 5649
2026-06-19T23:28:15.6693605Z             }
2026-06-19T23:28:15.6693733Z           ]
2026-06-19T23:28:15.6693866Z         },
2026-06-19T23:28:15.6693996Z         "int": {
2026-06-19T23:28:15.6694138Z           "complete": true,
2026-06-19T23:28:15.6694274Z           "evidence": [
2026-06-19T23:28:15.6694391Z             {
2026-06-19T23:28:15.6694574Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-19T23:28:15.6694701Z               "line": 19
2026-06-19T23:28:15.6694824Z             }
2026-06-19T23:28:15.6694938Z           ]
2026-06-19T23:28:15.6695060Z         },
2026-06-19T23:28:15.6695189Z         "unit": {
2026-06-19T23:28:15.6695314Z           "complete": true,
2026-06-19T23:28:15.6695441Z           "evidence": [
2026-06-19T23:28:15.6695581Z             {
2026-06-19T23:28:15.6695765Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6695924Z               "line": 395
2026-06-19T23:28:15.6696071Z             },
2026-06-19T23:28:15.6696219Z             {
2026-06-19T23:28:15.6696395Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6696525Z               "line": 421
2026-06-19T23:28:15.6696657Z             },
2026-06-19T23:28:15.6696787Z             {
2026-06-19T23:28:15.6696962Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6697092Z               "line": 440
2026-06-19T23:28:15.6697221Z             },
2026-06-19T23:28:15.6697343Z             {
2026-06-19T23:28:15.6697519Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6697650Z               "line": 475
2026-06-19T23:28:15.6697780Z             },
2026-06-19T23:28:15.6697904Z             {
2026-06-19T23:28:15.6698056Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6698199Z               "line": 8637
2026-06-19T23:28:15.6698327Z             }
2026-06-19T23:28:15.6698448Z           ]
2026-06-19T23:28:15.6698567Z         }
2026-06-19T23:28:15.6698685Z       }
2026-06-19T23:28:15.6698815Z     },
2026-06-19T23:28:15.6699014Z     {
2026-06-19T23:28:15.6699163Z       "id": "REQ-INSTALL-2",
2026-06-19T23:28:15.6699468Z       "title": "Marketplace-repackaging-friendly install",
2026-06-19T23:28:15.6699615Z       "requiredStages": [
2026-06-19T23:28:15.6699745Z         "doc"
2026-06-19T23:28:15.6699858Z       ],
2026-06-19T23:28:15.6699993Z       "stages": {
2026-06-19T23:28:15.6700121Z         "doc": {
2026-06-19T23:28:15.6700248Z           "complete": true,
2026-06-19T23:28:15.6700383Z           "evidence": [
2026-06-19T23:28:15.6700510Z             {
2026-06-19T23:28:15.6700654Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6700788Z               "line": 755
2026-06-19T23:28:15.6700935Z             }
2026-06-19T23:28:15.6701069Z           ]
2026-06-19T23:28:15.6701317Z         },
2026-06-19T23:28:15.6701451Z         "impl": {
2026-06-19T23:28:15.6701594Z           "complete": false,
2026-06-19T23:28:15.6701726Z           "evidence": []
2026-06-19T23:28:15.6701855Z         },
2026-06-19T23:28:15.6701985Z         "int": {
2026-06-19T23:28:15.6702127Z           "complete": false,
2026-06-19T23:28:15.6702267Z           "evidence": []
2026-06-19T23:28:15.6702417Z         },
2026-06-19T23:28:15.6702541Z         "unit": {
2026-06-19T23:28:15.6702683Z           "complete": false,
2026-06-19T23:28:15.6702815Z           "evidence": []
2026-06-19T23:28:15.6702940Z         }
2026-06-19T23:28:15.6703068Z       }
2026-06-19T23:28:15.6703182Z     },
2026-06-19T23:28:15.6703307Z     {
2026-06-19T23:28:15.6703444Z       "id": "REQ-INSTALL-3",
2026-06-19T23:28:15.6703645Z       "title": "Idempotent + interactive-optional first run",
2026-06-19T23:28:15.6703773Z       "requiredStages": [
2026-06-19T23:28:15.6703903Z         "impl",
2026-06-19T23:28:15.6704036Z         "int"
2026-06-19T23:28:15.6704170Z       ],
2026-06-19T23:28:15.6704298Z       "stages": {
2026-06-19T23:28:15.6704422Z         "doc": {
2026-06-19T23:28:15.6704561Z           "complete": false,
2026-06-19T23:28:15.6704694Z           "evidence": []
2026-06-19T23:28:15.6704814Z         },
2026-06-19T23:28:15.6704941Z         "impl": {
2026-06-19T23:28:15.6705081Z           "complete": true,
2026-06-19T23:28:15.6705214Z           "evidence": [
2026-06-19T23:28:15.6705341Z             {
2026-06-19T23:28:15.6705499Z               "path": "installer/install.ps1",
2026-06-19T23:28:15.6705635Z               "line": 100
2026-06-19T23:28:15.6705797Z             },
2026-06-19T23:28:15.6705930Z             {
2026-06-19T23:28:15.6706083Z               "path": "installer/install.ps1",
2026-06-19T23:28:15.6706226Z               "line": 111
2026-06-19T23:28:15.6706349Z             },
2026-06-19T23:28:15.6706484Z             {
2026-06-19T23:28:15.6706636Z               "path": "installer/install.sh",
2026-06-19T23:28:15.6706789Z               "line": 79
2026-06-19T23:28:15.6706917Z             }
2026-06-19T23:28:15.6707037Z           ]
2026-06-19T23:28:15.6707156Z         },
2026-06-19T23:28:15.6707284Z         "int": {
2026-06-19T23:28:15.6707423Z           "complete": true,
2026-06-19T23:28:15.6707551Z           "evidence": [
2026-06-19T23:28:15.6707681Z             {
2026-06-19T23:28:15.6707861Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-19T23:28:15.6707989Z               "line": 167
2026-06-19T23:28:15.6708112Z             }
2026-06-19T23:28:15.6708239Z           ]
2026-06-19T23:28:15.6708368Z         },
2026-06-19T23:28:15.6708483Z         "unit": {
2026-06-19T23:28:15.6708616Z           "complete": false,
2026-06-19T23:28:15.6708755Z           "evidence": []
2026-06-19T23:28:15.6708878Z         }
2026-06-19T23:28:15.6709122Z       }
2026-06-19T23:28:15.6709246Z     },
2026-06-19T23:28:15.6709370Z     {
2026-06-19T23:28:15.6709503Z       "id": "REQ-INSTALL-4",
2026-06-19T23:28:15.6710209Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-19T23:28:15.6710366Z       "requiredStages": [
2026-06-19T23:28:15.6710495Z         "impl",
2026-06-19T23:28:15.6710728Z         "unit"
2026-06-19T23:28:15.6710851Z       ],
2026-06-19T23:28:15.6710981Z       "stages": {
2026-06-19T23:28:15.6711108Z         "doc": {
2026-06-19T23:28:15.6711253Z           "complete": false,
2026-06-19T23:28:15.6711381Z           "evidence": []
2026-06-19T23:28:15.6711505Z         },
2026-06-19T23:28:15.6711634Z         "impl": {
2026-06-19T23:28:15.6711771Z           "complete": true,
2026-06-19T23:28:15.6711897Z           "evidence": [
2026-06-19T23:28:15.6712020Z             {
2026-06-19T23:28:15.6712212Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.6712345Z               "line": 165
2026-06-19T23:28:15.6712564Z             },
2026-06-19T23:28:15.6712687Z             {
2026-06-19T23:28:15.6712865Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6713001Z               "line": 29
2026-06-19T23:28:15.6713125Z             },
2026-06-19T23:28:15.6713248Z             {
2026-06-19T23:28:15.6713428Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6713572Z               "line": 288
2026-06-19T23:28:15.6713695Z             },
2026-06-19T23:28:15.6713820Z             {
2026-06-19T23:28:15.6713990Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6714125Z               "line": 356
2026-06-19T23:28:15.6714239Z             },
2026-06-19T23:28:15.6714367Z             {
2026-06-19T23:28:15.6714539Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6714677Z               "line": 386
2026-06-19T23:28:15.6714802Z             },
2026-06-19T23:28:15.6714920Z             {
2026-06-19T23:28:15.6715093Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6715225Z               "line": 434
2026-06-19T23:28:15.6715355Z             },
2026-06-19T23:28:15.6715478Z             {
2026-06-19T23:28:15.6715631Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6715760Z               "line": 5368
2026-06-19T23:28:15.6715902Z             }
2026-06-19T23:28:15.6716035Z           ]
2026-06-19T23:28:15.6716156Z         },
2026-06-19T23:28:15.6716285Z         "int": {
2026-06-19T23:28:15.6716424Z           "complete": false,
2026-06-19T23:28:15.6716562Z           "evidence": []
2026-06-19T23:28:15.6716687Z         },
2026-06-19T23:28:15.6716819Z         "unit": {
2026-06-19T23:28:15.6716953Z           "complete": true,
2026-06-19T23:28:15.6717087Z           "evidence": [
2026-06-19T23:28:15.6717219Z             {
2026-06-19T23:28:15.6717391Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.6717525Z               "line": 375
2026-06-19T23:28:15.6717655Z             },
2026-06-19T23:28:15.6717787Z             {
2026-06-19T23:28:15.6717960Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6718087Z               "line": 808
2026-06-19T23:28:15.6718213Z             },
2026-06-19T23:28:15.6718336Z             {
2026-06-19T23:28:15.6718515Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6718653Z               "line": 849
2026-06-19T23:28:15.6718780Z             },
2026-06-19T23:28:15.6718900Z             {
2026-06-19T23:28:15.6719128Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6719268Z               "line": 869
2026-06-19T23:28:15.6719386Z             },
2026-06-19T23:28:15.6719520Z             {
2026-06-19T23:28:15.6719672Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6719811Z               "line": 8375
2026-06-19T23:28:15.6719930Z             }
2026-06-19T23:28:15.6720049Z           ]
2026-06-19T23:28:15.6720179Z         }
2026-06-19T23:28:15.6720307Z       }
2026-06-19T23:28:15.6720440Z     },
2026-06-19T23:28:15.6720555Z     {
2026-06-19T23:28:15.6720702Z       "id": "REQ-INSTALL-5",
2026-06-19T23:28:15.6721255Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-19T23:28:15.6721527Z       "requiredStages": [
2026-06-19T23:28:15.6721650Z         "impl",
2026-06-19T23:28:15.6721775Z         "int"
2026-06-19T23:28:15.6721908Z       ],
2026-06-19T23:28:15.6722031Z       "stages": {
2026-06-19T23:28:15.6722156Z         "doc": {
2026-06-19T23:28:15.6722298Z           "complete": false,
2026-06-19T23:28:15.6722423Z           "evidence": []
2026-06-19T23:28:15.6722556Z         },
2026-06-19T23:28:15.6722680Z         "impl": {
2026-06-19T23:28:15.6722824Z           "complete": true,
2026-06-19T23:28:15.6722951Z           "evidence": [
2026-06-19T23:28:15.6723077Z             {
2026-06-19T23:28:15.6723338Z               "path": "installer/install.ps1",
2026-06-19T23:28:15.6723476Z               "line": 5
2026-06-19T23:28:15.6723604Z             },
2026-06-19T23:28:15.6723718Z             {
2026-06-19T23:28:15.6723878Z               "path": "installer/install.sh",
2026-06-19T23:28:15.6724007Z               "line": 6
2026-06-19T23:28:15.6724137Z             }
2026-06-19T23:28:15.6724264Z           ]
2026-06-19T23:28:15.6724389Z         },
2026-06-19T23:28:15.6724521Z         "int": {
2026-06-19T23:28:15.6724656Z           "complete": true,
2026-06-19T23:28:15.6724780Z           "evidence": [
2026-06-19T23:28:15.6724908Z             {
2026-06-19T23:28:15.6725075Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-19T23:28:15.6725213Z               "line": 22
2026-06-19T23:28:15.6725343Z             }
2026-06-19T23:28:15.6725471Z           ]
2026-06-19T23:28:15.6725596Z         },
2026-06-19T23:28:15.6725728Z         "unit": {
2026-06-19T23:28:15.6725852Z           "complete": false,
2026-06-19T23:28:15.6725992Z           "evidence": []
2026-06-19T23:28:15.6726124Z         }
2026-06-19T23:28:15.6726254Z       }
2026-06-19T23:28:15.6726381Z     },
2026-06-19T23:28:15.6726504Z     {
2026-06-19T23:28:15.6726647Z       "id": "REQ-INSTALL-6",
2026-06-19T23:28:15.6727914Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-19T23:28:15.6728076Z       "requiredStages": [
2026-06-19T23:28:15.6728206Z         "impl",
2026-06-19T23:28:15.6728333Z         "unit"
2026-06-19T23:28:15.6728458Z       ],
2026-06-19T23:28:15.6728595Z       "stages": {
2026-06-19T23:28:15.6728720Z         "doc": {
2026-06-19T23:28:15.6728864Z           "complete": false,
2026-06-19T23:28:15.6729095Z           "evidence": []
2026-06-19T23:28:15.6729218Z         },
2026-06-19T23:28:15.6729350Z         "impl": {
2026-06-19T23:28:15.6729489Z           "complete": true,
2026-06-19T23:28:15.6729612Z           "evidence": [
2026-06-19T23:28:15.6729746Z             {
2026-06-19T23:28:15.6729918Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6730051Z               "line": 61
2026-06-19T23:28:15.6730180Z             },
2026-06-19T23:28:15.6730304Z             {
2026-06-19T23:28:15.6730480Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.6730618Z               "line": 641
2026-06-19T23:28:15.6730744Z             },
2026-06-19T23:28:15.6730867Z             {
2026-06-19T23:28:15.6731039Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.6731181Z               "line": 191
2026-06-19T23:28:15.6731305Z             },
2026-06-19T23:28:15.6731435Z             {
2026-06-19T23:28:15.6731615Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.6731745Z               "line": 276
2026-06-19T23:28:15.6731877Z             },
2026-06-19T23:28:15.6732000Z             {
2026-06-19T23:28:15.6732153Z               "path": "crates/spt/src/main.rs",
2026-06-19T23:28:15.6732286Z               "line": 43
2026-06-19T23:28:15.6732520Z             },
2026-06-19T23:28:15.6732650Z             {
2026-06-19T23:28:15.6732802Z               "path": "installer/install.sh",
2026-06-19T23:28:15.6732940Z               "line": 104
2026-06-19T23:28:15.6733064Z             }
2026-06-19T23:28:15.6733187Z           ]
2026-06-19T23:28:15.6733308Z         },
2026-06-19T23:28:15.6733440Z         "int": {
2026-06-19T23:28:15.6733579Z           "complete": false,
2026-06-19T23:28:15.6733708Z           "evidence": []
2026-06-19T23:28:15.6733836Z         },
2026-06-19T23:28:15.6733961Z         "unit": {
2026-06-19T23:28:15.6734111Z           "complete": true,
2026-06-19T23:28:15.6734240Z           "evidence": [
2026-06-19T23:28:15.6734476Z             {
2026-06-19T23:28:15.6734658Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-19T23:28:15.6734791Z               "line": 894
2026-06-19T23:28:15.6734920Z             }
2026-06-19T23:28:15.6735039Z           ]
2026-06-19T23:28:15.6735168Z         }
2026-06-19T23:28:15.6735293Z       }
2026-06-19T23:28:15.6735429Z     },
2026-06-19T23:28:15.6735560Z     {
2026-06-19T23:28:15.6735693Z       "id": "REQ-INSTALL-7",
2026-06-19T23:28:15.6736876Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-19T23:28:15.6737022Z       "requiredStages": [
2026-06-19T23:28:15.6737155Z         "impl"
2026-06-19T23:28:15.6737277Z       ],
2026-06-19T23:28:15.6737415Z       "stages": {
2026-06-19T23:28:15.6737544Z         "doc": {
2026-06-19T23:28:15.6737682Z           "complete": false,
2026-06-19T23:28:15.6737817Z           "evidence": []
2026-06-19T23:28:15.6737940Z         },
2026-06-19T23:28:15.6738069Z         "impl": {
2026-06-19T23:28:15.6738212Z           "complete": true,
2026-06-19T23:28:15.6738350Z           "evidence": [
2026-06-19T23:28:15.6738475Z             {
2026-06-19T23:28:15.6738626Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6738756Z               "line": 3892
2026-06-19T23:28:15.6738878Z             },
2026-06-19T23:28:15.6739076Z             {
2026-06-19T23:28:15.6739237Z               "path": "installer/install.ps1",
2026-06-19T23:28:15.6739362Z               "line": 157
2026-06-19T23:28:15.6739484Z             }
2026-06-19T23:28:15.6739616Z           ]
2026-06-19T23:28:15.6739741Z         },
2026-06-19T23:28:15.6739863Z         "int": {
2026-06-19T23:28:15.6740001Z           "complete": false,
2026-06-19T23:28:15.6740144Z           "evidence": []
2026-06-19T23:28:15.6740272Z         },
2026-06-19T23:28:15.6740397Z         "unit": {
2026-06-19T23:28:15.6740530Z           "complete": false,
2026-06-19T23:28:15.6740674Z           "evidence": []
2026-06-19T23:28:15.6740802Z         }
2026-06-19T23:28:15.6740926Z       }
2026-06-19T23:28:15.6741055Z     },
2026-06-19T23:28:15.6741178Z     {
2026-06-19T23:28:15.6741328Z       "id": "REQ-INSTALL-8",
2026-06-19T23:28:15.6742451Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-19T23:28:15.6742599Z       "requiredStages": [
2026-06-19T23:28:15.6742727Z         "impl"
2026-06-19T23:28:15.6742851Z       ],
2026-06-19T23:28:15.6742985Z       "stages": {
2026-06-19T23:28:15.6743109Z         "doc": {
2026-06-19T23:28:15.6743248Z           "complete": false,
2026-06-19T23:28:15.6743376Z           "evidence": []
2026-06-19T23:28:15.6743509Z         },
2026-06-19T23:28:15.6743639Z         "impl": {
2026-06-19T23:28:15.6743771Z           "complete": true,
2026-06-19T23:28:15.6744015Z           "evidence": [
2026-06-19T23:28:15.6744135Z             {
2026-06-19T23:28:15.6744296Z               "path": "installer/install.ps1",
2026-06-19T23:28:15.6744430Z               "line": 184
2026-06-19T23:28:15.6744559Z             },
2026-06-19T23:28:15.6744686Z             {
2026-06-19T23:28:15.6744839Z               "path": "installer/install.sh",
2026-06-19T23:28:15.6744970Z               "line": 121
2026-06-19T23:28:15.6745098Z             }
2026-06-19T23:28:15.6745228Z           ]
2026-06-19T23:28:15.6745351Z         },
2026-06-19T23:28:15.6745480Z         "int": {
2026-06-19T23:28:15.6745619Z           "complete": false,
2026-06-19T23:28:15.6745853Z           "evidence": []
2026-06-19T23:28:15.6745985Z         },
2026-06-19T23:28:15.6746115Z         "unit": {
2026-06-19T23:28:15.6746257Z           "complete": false,
2026-06-19T23:28:15.6746386Z           "evidence": []
2026-06-19T23:28:15.6746515Z         }
2026-06-19T23:28:15.6746643Z       }
2026-06-19T23:28:15.6746768Z     },
2026-06-19T23:28:15.6746896Z     {
2026-06-19T23:28:15.6747036Z       "id": "REQ-INSTALL-9",
2026-06-19T23:28:15.6748324Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-19T23:28:15.6748481Z       "requiredStages": [
2026-06-19T23:28:15.6748604Z         "doc",
2026-06-19T23:28:15.6748752Z         "impl",
2026-06-19T23:28:15.6748885Z         "unit"
2026-06-19T23:28:15.6749077Z       ],
2026-06-19T23:28:15.6749210Z       "stages": {
2026-06-19T23:28:15.6749331Z         "doc": {
2026-06-19T23:28:15.6749463Z           "complete": true,
2026-06-19T23:28:15.6749598Z           "evidence": [
2026-06-19T23:28:15.6749734Z             {
2026-06-19T23:28:15.6749873Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6750008Z               "line": 771
2026-06-19T23:28:15.6750130Z             }
2026-06-19T23:28:15.6750258Z           ]
2026-06-19T23:28:15.6750381Z         },
2026-06-19T23:28:15.6750508Z         "impl": {
2026-06-19T23:28:15.6750647Z           "complete": true,
2026-06-19T23:28:15.6750775Z           "evidence": [
2026-06-19T23:28:15.6750905Z             {
2026-06-19T23:28:15.6751052Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6751181Z               "line": 2507
2026-06-19T23:28:15.6751305Z             },
2026-06-19T23:28:15.6751433Z             {
2026-06-19T23:28:15.6751592Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6751719Z               "line": 2531
2026-06-19T23:28:15.6751849Z             }
2026-06-19T23:28:15.6751977Z           ]
2026-06-19T23:28:15.6752106Z         },
2026-06-19T23:28:15.6752236Z         "int": {
2026-06-19T23:28:15.6752359Z           "complete": false,
2026-06-19T23:28:15.6752498Z           "evidence": []
2026-06-19T23:28:15.6752620Z         },
2026-06-19T23:28:15.6752745Z         "unit": {
2026-06-19T23:28:15.6752879Z           "complete": true,
2026-06-19T23:28:15.6753011Z           "evidence": [
2026-06-19T23:28:15.6753145Z             {
2026-06-19T23:28:15.6753292Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6753426Z               "line": 7563
2026-06-19T23:28:15.6753545Z             },
2026-06-19T23:28:15.6753678Z             {
2026-06-19T23:28:15.6753822Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6753955Z               "line": 8405
2026-06-19T23:28:15.6754084Z             }
2026-06-19T23:28:15.6754208Z           ]
2026-06-19T23:28:15.6754331Z         }
2026-06-19T23:28:15.6754456Z       }
2026-06-19T23:28:15.6754594Z     },
2026-06-19T23:28:15.6754719Z     {
2026-06-19T23:28:15.6754861Z       "id": "REQ-KICK-1",
2026-06-19T23:28:15.6757423Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-19T23:28:15.6757800Z       "requiredStages": [
2026-06-19T23:28:15.6757930Z         "doc",
2026-06-19T23:28:15.6758062Z         "impl",
2026-06-19T23:28:15.6758185Z         "unit",
2026-06-19T23:28:15.6758318Z         "int"
2026-06-19T23:28:15.6758440Z       ],
2026-06-19T23:28:15.6758564Z       "stages": {
2026-06-19T23:28:15.6758689Z         "doc": {
2026-06-19T23:28:15.6758836Z           "complete": true,
2026-06-19T23:28:15.6759051Z           "evidence": [
2026-06-19T23:28:15.6759174Z             {
2026-06-19T23:28:15.6759327Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6759450Z               "line": 342
2026-06-19T23:28:15.6759576Z             }
2026-06-19T23:28:15.6759699Z           ]
2026-06-19T23:28:15.6759828Z         },
2026-06-19T23:28:15.6759966Z         "impl": {
2026-06-19T23:28:15.6760099Z           "complete": true,
2026-06-19T23:28:15.6760244Z           "evidence": [
2026-06-19T23:28:15.6760367Z             {
2026-06-19T23:28:15.6760544Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.6760666Z               "line": 41
2026-06-19T23:28:15.6765003Z             },
2026-06-19T23:28:15.6765145Z             {
2026-06-19T23:28:15.6765308Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.6765449Z               "line": 412
2026-06-19T23:28:15.6765574Z             }
2026-06-19T23:28:15.6765703Z           ]
2026-06-19T23:28:15.6765825Z         },
2026-06-19T23:28:15.6765959Z         "int": {
2026-06-19T23:28:15.6766095Z           "complete": true,
2026-06-19T23:28:15.6766228Z           "evidence": [
2026-06-19T23:28:15.6766363Z             {
2026-06-19T23:28:15.6766548Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.6766691Z               "line": 913
2026-06-19T23:28:15.6766819Z             }
2026-06-19T23:28:15.6766949Z           ]
2026-06-19T23:28:15.6767077Z         },
2026-06-19T23:28:15.6767207Z         "unit": {
2026-06-19T23:28:15.6767344Z           "complete": true,
2026-06-19T23:28:15.6767473Z           "evidence": [
2026-06-19T23:28:15.6767602Z             {
2026-06-19T23:28:15.6767773Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.6767908Z               "line": 205
2026-06-19T23:28:15.6768045Z             }
2026-06-19T23:28:15.6768166Z           ]
2026-06-19T23:28:15.6768297Z         }
2026-06-19T23:28:15.6768417Z       }
2026-06-19T23:28:15.6768537Z     },
2026-06-19T23:28:15.6768664Z     {
2026-06-19T23:28:15.6768812Z       "id": "REQ-MANIFEST-1",
2026-06-19T23:28:15.6769144Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-19T23:28:15.6769277Z       "requiredStages": [
2026-06-19T23:28:15.6769405Z         "doc",
2026-06-19T23:28:15.6769530Z         "impl",
2026-06-19T23:28:15.6769663Z         "unit"
2026-06-19T23:28:15.6769778Z       ],
2026-06-19T23:28:15.6769912Z       "stages": {
2026-06-19T23:28:15.6770045Z         "doc": {
2026-06-19T23:28:15.6770178Z           "complete": true,
2026-06-19T23:28:15.6770316Z           "evidence": [
2026-06-19T23:28:15.6770441Z             {
2026-06-19T23:28:15.6770598Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.6770718Z               "line": 19
2026-06-19T23:28:15.6770984Z             }
2026-06-19T23:28:15.6771118Z           ]
2026-06-19T23:28:15.6771240Z         },
2026-06-19T23:28:15.6771364Z         "impl": {
2026-06-19T23:28:15.6771487Z           "complete": true,
2026-06-19T23:28:15.6771619Z           "evidence": [
2026-06-19T23:28:15.6771744Z             {
2026-06-19T23:28:15.6771919Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6772049Z               "line": 18
2026-06-19T23:28:15.6772168Z             }
2026-06-19T23:28:15.6772296Z           ]
2026-06-19T23:28:15.6772421Z         },
2026-06-19T23:28:15.6772548Z         "int": {
2026-06-19T23:28:15.6772688Z           "complete": false,
2026-06-19T23:28:15.6772921Z           "evidence": []
2026-06-19T23:28:15.6773050Z         },
2026-06-19T23:28:15.6773169Z         "unit": {
2026-06-19T23:28:15.6773308Z           "complete": true,
2026-06-19T23:28:15.6773435Z           "evidence": [
2026-06-19T23:28:15.6773565Z             {
2026-06-19T23:28:15.6773736Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6773861Z               "line": 1018
2026-06-19T23:28:15.6773991Z             },
2026-06-19T23:28:15.6774117Z             {
2026-06-19T23:28:15.6774284Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6774417Z               "line": 1233
2026-06-19T23:28:15.6774541Z             },
2026-06-19T23:28:15.6774651Z             {
2026-06-19T23:28:15.6774827Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6774952Z               "line": 1245
2026-06-19T23:28:15.6775079Z             },
2026-06-19T23:28:15.6775209Z             {
2026-06-19T23:28:15.6775371Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6775505Z               "line": 1256
2026-06-19T23:28:15.6775619Z             },
2026-06-19T23:28:15.6775738Z             {
2026-06-19T23:28:15.6775915Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6776048Z               "line": 1273
2026-06-19T23:28:15.6776183Z             },
2026-06-19T23:28:15.6776305Z             {
2026-06-19T23:28:15.6776476Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6776613Z               "line": 1287
2026-06-19T23:28:15.6776726Z             },
2026-06-19T23:28:15.6776856Z             {
2026-06-19T23:28:15.6777022Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6777156Z               "line": 1403
2026-06-19T23:28:15.6777279Z             },
2026-06-19T23:28:15.6777408Z             {
2026-06-19T23:28:15.6777581Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6777708Z               "line": 1418
2026-06-19T23:28:15.6777847Z             },
2026-06-19T23:28:15.6777966Z             {
2026-06-19T23:28:15.6778134Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6778262Z               "line": 1529
2026-06-19T23:28:15.6778386Z             },
2026-06-19T23:28:15.6778514Z             {
2026-06-19T23:28:15.6778692Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6778815Z               "line": 1540
2026-06-19T23:28:15.6778939Z             }
2026-06-19T23:28:15.6779126Z           ]
2026-06-19T23:28:15.6779243Z         }
2026-06-19T23:28:15.6779367Z       }
2026-06-19T23:28:15.6779489Z     },
2026-06-19T23:28:15.6779612Z     {
2026-06-19T23:28:15.6779757Z       "id": "REQ-MANIFEST-2",
2026-06-19T23:28:15.6780353Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-19T23:28:15.6780495Z       "requiredStages": [
2026-06-19T23:28:15.6780624Z         "doc",
2026-06-19T23:28:15.6780752Z         "impl",
2026-06-19T23:28:15.6780881Z         "unit"
2026-06-19T23:28:15.6780992Z       ],
2026-06-19T23:28:15.6781124Z       "stages": {
2026-06-19T23:28:15.6781244Z         "doc": {
2026-06-19T23:28:15.6781373Z           "complete": true,
2026-06-19T23:28:15.6781617Z           "evidence": [
2026-06-19T23:28:15.6781744Z             {
2026-06-19T23:28:15.6781890Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6782024Z               "line": 75
2026-06-19T23:28:15.6782150Z             }
2026-06-19T23:28:15.6782270Z           ]
2026-06-19T23:28:15.6782390Z         },
2026-06-19T23:28:15.6782513Z         "impl": {
2026-06-19T23:28:15.6782648Z           "complete": true,
2026-06-19T23:28:15.6782775Z           "evidence": [
2026-06-19T23:28:15.6782895Z             {
2026-06-19T23:28:15.6783067Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6783201Z               "line": 82
2026-06-19T23:28:15.6783428Z             },
2026-06-19T23:28:15.6783544Z             {
2026-06-19T23:28:15.6783715Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6783850Z               "line": 15
2026-06-19T23:28:15.6783972Z             },
2026-06-19T23:28:15.6784096Z             {
2026-06-19T23:28:15.6784259Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6784401Z               "line": 65
2026-06-19T23:28:15.6784527Z             },
2026-06-19T23:28:15.6784653Z             {
2026-06-19T23:28:15.6784825Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6784959Z               "line": 83
2026-06-19T23:28:15.6785082Z             },
2026-06-19T23:28:15.6785197Z             {
2026-06-19T23:28:15.6785358Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6785484Z               "line": 183
2026-06-19T23:28:15.6785617Z             },
2026-06-19T23:28:15.6785740Z             {
2026-06-19T23:28:15.6785912Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6786055Z               "line": 527
2026-06-19T23:28:15.6786175Z             },
2026-06-19T23:28:15.6786303Z             {
2026-06-19T23:28:15.6786476Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6786599Z               "line": 553
2026-06-19T23:28:15.6786733Z             },
2026-06-19T23:28:15.6786856Z             {
2026-06-19T23:28:15.6787027Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6787164Z               "line": 671
2026-06-19T23:28:15.6787296Z             },
2026-06-19T23:28:15.6787416Z             {
2026-06-19T23:28:15.6787587Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6787716Z               "line": 696
2026-06-19T23:28:15.6787845Z             },
2026-06-19T23:28:15.6787978Z             {
2026-06-19T23:28:15.6788146Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6788283Z               "line": 719
2026-06-19T23:28:15.6788417Z             },
2026-06-19T23:28:15.6788540Z             {
2026-06-19T23:28:15.6788718Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6788846Z               "line": 734
2026-06-19T23:28:15.6789037Z             },
2026-06-19T23:28:15.6789146Z             {
2026-06-19T23:28:15.6789310Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6789441Z               "line": 5539
2026-06-19T23:28:15.6789567Z             },
2026-06-19T23:28:15.6789695Z             {
2026-06-19T23:28:15.6789845Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6789970Z               "line": 5553
2026-06-19T23:28:15.6790092Z             },
2026-06-19T23:28:15.6790216Z             {
2026-06-19T23:28:15.6790369Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6790496Z               "line": 5587
2026-06-19T23:28:15.6790631Z             }
2026-06-19T23:28:15.6790754Z           ]
2026-06-19T23:28:15.6790869Z         },
2026-06-19T23:28:15.6790998Z         "int": {
2026-06-19T23:28:15.6791135Z           "complete": false,
2026-06-19T23:28:15.6791265Z           "evidence": []
2026-06-19T23:28:15.6791379Z         },
2026-06-19T23:28:15.6791504Z         "unit": {
2026-06-19T23:28:15.6791632Z           "complete": true,
2026-06-19T23:28:15.6791761Z           "evidence": [
2026-06-19T23:28:15.6791984Z             {
2026-06-19T23:28:15.6792162Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.6792290Z               "line": 921
2026-06-19T23:28:15.6792417Z             },
2026-06-19T23:28:15.6792541Z             {
2026-06-19T23:28:15.6792715Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6792849Z               "line": 211
2026-06-19T23:28:15.6792969Z             },
2026-06-19T23:28:15.6793092Z             {
2026-06-19T23:28:15.6793260Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6793388Z               "line": 272
2026-06-19T23:28:15.6793522Z             },
2026-06-19T23:28:15.6793741Z             {
2026-06-19T23:28:15.6793922Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6794051Z               "line": 313
2026-06-19T23:28:15.6794175Z             },
2026-06-19T23:28:15.6794304Z             {
2026-06-19T23:28:15.6794467Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6794604Z               "line": 325
2026-06-19T23:28:15.6794729Z             },
2026-06-19T23:28:15.6794866Z             {
2026-06-19T23:28:15.6795034Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6795171Z               "line": 336
2026-06-19T23:28:15.6795299Z             },
2026-06-19T23:28:15.6795424Z             {
2026-06-19T23:28:15.6795594Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6795724Z               "line": 345
2026-06-19T23:28:15.6795853Z             },
2026-06-19T23:28:15.6795976Z             {
2026-06-19T23:28:15.6796139Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6796281Z               "line": 361
2026-06-19T23:28:15.6796411Z             },
2026-06-19T23:28:15.6796538Z             {
2026-06-19T23:28:15.6796707Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6796830Z               "line": 444
2026-06-19T23:28:15.6796950Z             },
2026-06-19T23:28:15.6797073Z             {
2026-06-19T23:28:15.6797249Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6797374Z               "line": 958
2026-06-19T23:28:15.6797496Z             },
2026-06-19T23:28:15.6797625Z             {
2026-06-19T23:28:15.6797804Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6797932Z               "line": 982
2026-06-19T23:28:15.6798062Z             },
2026-06-19T23:28:15.6798190Z             {
2026-06-19T23:28:15.6798362Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6798500Z               "line": 1008
2026-06-19T23:28:15.6798625Z             },
2026-06-19T23:28:15.6798752Z             {
2026-06-19T23:28:15.6798930Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6799153Z               "line": 1027
2026-06-19T23:28:15.6799278Z             },
2026-06-19T23:28:15.6799406Z             {
2026-06-19T23:28:15.6799574Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6799706Z               "line": 1058
2026-06-19T23:28:15.6799836Z             },
2026-06-19T23:28:15.6799964Z             {
2026-06-19T23:28:15.6800127Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.6800260Z               "line": 309
2026-06-19T23:28:15.6800387Z             },
2026-06-19T23:28:15.6800516Z             {
2026-06-19T23:28:15.6800676Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.6800814Z               "line": 606
2026-06-19T23:28:15.6800934Z             },
2026-06-19T23:28:15.6801052Z             {
2026-06-19T23:28:15.6801201Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6801343Z               "line": 8582
2026-06-19T23:28:15.6801478Z             },
2026-06-19T23:28:15.6801596Z             {
2026-06-19T23:28:15.6801754Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6801887Z               "line": 9530
2026-06-19T23:28:15.6802136Z             }
2026-06-19T23:28:15.6802263Z           ]
2026-06-19T23:28:15.6802384Z         }
2026-06-19T23:28:15.6802516Z       }
2026-06-19T23:28:15.6802641Z     },
2026-06-19T23:28:15.6802761Z     {
2026-06-19T23:28:15.6802907Z       "id": "REQ-MANIFEST-3",
2026-06-19T23:28:15.6803599Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-19T23:28:15.6803749Z       "requiredStages": [
2026-06-19T23:28:15.6803862Z         "doc",
2026-06-19T23:28:15.6803996Z         "impl",
2026-06-19T23:28:15.6804239Z         "unit"
2026-06-19T23:28:15.6804359Z       ],
2026-06-19T23:28:15.6804473Z       "stages": {
2026-06-19T23:28:15.6804597Z         "doc": {
2026-06-19T23:28:15.6804735Z           "complete": true,
2026-06-19T23:28:15.6804864Z           "evidence": [
2026-06-19T23:28:15.6804994Z             {
2026-06-19T23:28:15.6805135Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6805270Z               "line": 81
2026-06-19T23:28:15.6805398Z             }
2026-06-19T23:28:15.6805522Z           ]
2026-06-19T23:28:15.6805647Z         },
2026-06-19T23:28:15.6805774Z         "impl": {
2026-06-19T23:28:15.6805911Z           "complete": true,
2026-06-19T23:28:15.6806051Z           "evidence": [
2026-06-19T23:28:15.6806173Z             {
2026-06-19T23:28:15.6806346Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6806469Z               "line": 92
2026-06-19T23:28:15.6806599Z             },
2026-06-19T23:28:15.6806723Z             {
2026-06-19T23:28:15.6806900Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6807042Z               "line": 101
2026-06-19T23:28:15.6807171Z             },
2026-06-19T23:28:15.6807295Z             {
2026-06-19T23:28:15.6807461Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6807586Z               "line": 132
2026-06-19T23:28:15.6807714Z             },
2026-06-19T23:28:15.6807839Z             {
2026-06-19T23:28:15.6808014Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6808142Z               "line": 577
2026-06-19T23:28:15.6808270Z             },
2026-06-19T23:28:15.6808397Z             {
2026-06-19T23:28:15.6808569Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6808697Z               "line": 633
2026-06-19T23:28:15.6808822Z             },
2026-06-19T23:28:15.6809012Z             {
2026-06-19T23:28:15.6809161Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6809289Z               "line": 5600
2026-06-19T23:28:15.6809413Z             },
2026-06-19T23:28:15.6809542Z             {
2026-06-19T23:28:15.6809689Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6809829Z               "line": 5626
2026-06-19T23:28:15.6809947Z             }
2026-06-19T23:28:15.6810077Z           ]
2026-06-19T23:28:15.6810200Z         },
2026-06-19T23:28:15.6810333Z         "int": {
2026-06-19T23:28:15.6810473Z           "complete": false,
2026-06-19T23:28:15.6810600Z           "evidence": []
2026-06-19T23:28:15.6810730Z         },
2026-06-19T23:28:15.6810862Z         "unit": {
2026-06-19T23:28:15.6810994Z           "complete": true,
2026-06-19T23:28:15.6811133Z           "evidence": [
2026-06-19T23:28:15.6811259Z             {
2026-06-19T23:28:15.6811427Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6811564Z               "line": 371
2026-06-19T23:28:15.6811694Z             },
2026-06-19T23:28:15.6811823Z             {
2026-06-19T23:28:15.6811995Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6812138Z               "line": 429
2026-06-19T23:28:15.6812265Z             },
2026-06-19T23:28:15.6812391Z             {
2026-06-19T23:28:15.6812566Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6812692Z               "line": 1082
2026-06-19T23:28:15.6812819Z             },
2026-06-19T23:28:15.6813053Z             {
2026-06-19T23:28:15.6813215Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6813335Z               "line": 8675
2026-06-19T23:28:15.6813467Z             }
2026-06-19T23:28:15.6813595Z           ]
2026-06-19T23:28:15.6813718Z         }
2026-06-19T23:28:15.6813840Z       }
2026-06-19T23:28:15.6813965Z     },
2026-06-19T23:28:15.6814075Z     {
2026-06-19T23:28:15.6814218Z       "id": "REQ-MANIFEST-4",
2026-06-19T23:28:15.6814985Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-19T23:28:15.6815239Z       "requiredStages": [
2026-06-19T23:28:15.6815357Z         "doc",
2026-06-19T23:28:15.6815486Z         "impl",
2026-06-19T23:28:15.6815615Z         "unit"
2026-06-19T23:28:15.6815743Z       ],
2026-06-19T23:28:15.6815874Z       "stages": {
2026-06-19T23:28:15.6816010Z         "doc": {
2026-06-19T23:28:15.6816150Z           "complete": true,
2026-06-19T23:28:15.6816282Z           "evidence": [
2026-06-19T23:28:15.6816404Z             {
2026-06-19T23:28:15.6816554Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6816686Z               "line": 88
2026-06-19T23:28:15.6816816Z             }
2026-06-19T23:28:15.6816940Z           ]
2026-06-19T23:28:15.6817058Z         },
2026-06-19T23:28:15.6817183Z         "impl": {
2026-06-19T23:28:15.6817320Z           "complete": true,
2026-06-19T23:28:15.6817445Z           "evidence": [
2026-06-19T23:28:15.6817569Z             {
2026-06-19T23:28:15.6817740Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6817883Z               "line": 100
2026-06-19T23:28:15.6818011Z             },
2026-06-19T23:28:15.6818137Z             {
2026-06-19T23:28:15.6818308Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6818437Z               "line": 183
2026-06-19T23:28:15.6818560Z             },
2026-06-19T23:28:15.6818687Z             {
2026-06-19T23:28:15.6818854Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6819067Z               "line": 83
2026-06-19T23:28:15.6819191Z             },
2026-06-19T23:28:15.6819315Z             {
2026-06-19T23:28:15.6819487Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.6819629Z               "line": 625
2026-06-19T23:28:15.6819750Z             },
2026-06-19T23:28:15.6819882Z             {
2026-06-19T23:28:15.6820045Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.6820178Z               "line": 650
2026-06-19T23:28:15.6820307Z             }
2026-06-19T23:28:15.6820436Z           ]
2026-06-19T23:28:15.6820559Z         },
2026-06-19T23:28:15.6820689Z         "int": {
2026-06-19T23:28:15.6820832Z           "complete": false,
2026-06-19T23:28:15.6820971Z           "evidence": []
2026-06-19T23:28:15.6821094Z         },
2026-06-19T23:28:15.6821228Z         "unit": {
2026-06-19T23:28:15.6821376Z           "complete": true,
2026-06-19T23:28:15.6821512Z           "evidence": [
2026-06-19T23:28:15.6821636Z             {
2026-06-19T23:28:15.6821810Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6821949Z               "line": 1353
2026-06-19T23:28:15.6822064Z             },
2026-06-19T23:28:15.6822191Z             {
2026-06-19T23:28:15.6822359Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6822501Z               "line": 1386
2026-06-19T23:28:15.6822612Z             },
2026-06-19T23:28:15.6822745Z             {
2026-06-19T23:28:15.6822917Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.6823046Z               "line": 984
2026-06-19T23:28:15.6823179Z             }
2026-06-19T23:28:15.6823303Z           ]
2026-06-19T23:28:15.6823431Z         }
2026-06-19T23:28:15.6823552Z       }
2026-06-19T23:28:15.6823679Z     },
2026-06-19T23:28:15.6823809Z     {
2026-06-19T23:28:15.6824070Z       "id": "REQ-MANIFEST-5",
2026-06-19T23:28:15.6827071Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-19T23:28:15.6827342Z       "requiredStages": [
2026-06-19T23:28:15.6827466Z         "doc",
2026-06-19T23:28:15.6827594Z         "impl",
2026-06-19T23:28:15.6827719Z         "unit"
2026-06-19T23:28:15.6827848Z       ],
2026-06-19T23:28:15.6827976Z       "stages": {
2026-06-19T23:28:15.6828105Z         "doc": {
2026-06-19T23:28:15.6828247Z           "complete": true,
2026-06-19T23:28:15.6828373Z           "evidence": [
2026-06-19T23:28:15.6828496Z             {
2026-06-19T23:28:15.6828645Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6828786Z               "line": 83
2026-06-19T23:28:15.6828906Z             }
2026-06-19T23:28:15.6829096Z           ]
2026-06-19T23:28:15.6829220Z         },
2026-06-19T23:28:15.6829343Z         "impl": {
2026-06-19T23:28:15.6829493Z           "complete": true,
2026-06-19T23:28:15.6829618Z           "evidence": [
2026-06-19T23:28:15.6829743Z             {
2026-06-19T23:28:15.6829923Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6830057Z               "line": 120
2026-06-19T23:28:15.6830185Z             }
2026-06-19T23:28:15.6830310Z           ]
2026-06-19T23:28:15.6830433Z         },
2026-06-19T23:28:15.6830582Z         "int": {
2026-06-19T23:28:15.6830738Z           "complete": false,
2026-06-19T23:28:15.6830882Z           "evidence": []
2026-06-19T23:28:15.6831006Z         },
2026-06-19T23:28:15.6831138Z         "unit": {
2026-06-19T23:28:15.6831269Z           "complete": true,
2026-06-19T23:28:15.6831406Z           "evidence": [
2026-06-19T23:28:15.6831536Z             {
2026-06-19T23:28:15.6831706Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-19T23:28:15.6831851Z               "line": 404
2026-06-19T23:28:15.6831973Z             },
2026-06-19T23:28:15.6832101Z             {
2026-06-19T23:28:15.6832267Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6832403Z               "line": 1155
2026-06-19T23:28:15.6832533Z             },
2026-06-19T23:28:15.6832661Z             {
2026-06-19T23:28:15.6832839Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6832976Z               "line": 1184
2026-06-19T23:28:15.6833105Z             },
2026-06-19T23:28:15.6833229Z             {
2026-06-19T23:28:15.6833405Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6833539Z               "line": 1224
2026-06-19T23:28:15.6833662Z             },
2026-06-19T23:28:15.6833788Z             {
2026-06-19T23:28:15.6833963Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6834088Z               "line": 1239
2026-06-19T23:28:15.6834206Z             }
2026-06-19T23:28:15.6834340Z           ]
2026-06-19T23:28:15.6834470Z         }
2026-06-19T23:28:15.6834596Z       }
2026-06-19T23:28:15.6834725Z     },
2026-06-19T23:28:15.6834848Z     {
2026-06-19T23:28:15.6834989Z       "id": "REQ-MANIFEST-6",
2026-06-19T23:28:15.6837304Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-19T23:28:15.6837563Z       "requiredStages": [
2026-06-19T23:28:15.6837783Z         "doc",
2026-06-19T23:28:15.6837912Z         "unit"
2026-06-19T23:28:15.6838026Z       ],
2026-06-19T23:28:15.6838150Z       "stages": {
2026-06-19T23:28:15.6838275Z         "doc": {
2026-06-19T23:28:15.6838412Z           "complete": true,
2026-06-19T23:28:15.6838541Z           "evidence": [
2026-06-19T23:28:15.6838680Z             {
2026-06-19T23:28:15.6838831Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6839042Z               "line": 141
2026-06-19T23:28:15.6839171Z             }
2026-06-19T23:28:15.6839295Z           ]
2026-06-19T23:28:15.6839418Z         },
2026-06-19T23:28:15.6839539Z         "impl": {
2026-06-19T23:28:15.6839680Z           "complete": false,
2026-06-19T23:28:15.6839818Z           "evidence": []
2026-06-19T23:28:15.6839936Z         },
2026-06-19T23:28:15.6840063Z         "int": {
2026-06-19T23:28:15.6840207Z           "complete": false,
2026-06-19T23:28:15.6840335Z           "evidence": []
2026-06-19T23:28:15.6840464Z         },
2026-06-19T23:28:15.6840593Z         "unit": {
2026-06-19T23:28:15.6840730Z           "complete": true,
2026-06-19T23:28:15.6840856Z           "evidence": [
2026-06-19T23:28:15.6840988Z             {
2026-06-19T23:28:15.6841156Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.6841294Z               "line": 1261
2026-06-19T23:28:15.6841418Z             }
2026-06-19T23:28:15.6841546Z           ]
2026-06-19T23:28:15.6841670Z         }
2026-06-19T23:28:15.6841795Z       }
2026-06-19T23:28:15.6841923Z     },
2026-06-19T23:28:15.6842038Z     {
2026-06-19T23:28:15.6842186Z       "id": "REQ-MANIFEST-7",
2026-06-19T23:28:15.6845295Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-19T23:28:15.6845473Z       "requiredStages": [
2026-06-19T23:28:15.6845603Z         "doc",
2026-06-19T23:28:15.6845723Z         "impl",
2026-06-19T23:28:15.6845850Z         "unit"
2026-06-19T23:28:15.6845975Z       ],
2026-06-19T23:28:15.6846112Z       "stages": {
2026-06-19T23:28:15.6846237Z         "doc": {
2026-06-19T23:28:15.6846380Z           "complete": true,
2026-06-19T23:28:15.6846508Z           "evidence": [
2026-06-19T23:28:15.6846633Z             {
2026-06-19T23:28:15.6846784Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.6846924Z               "line": 35
2026-06-19T23:28:15.6847052Z             }
2026-06-19T23:28:15.6847176Z           ]
2026-06-19T23:28:15.6847305Z         },
2026-06-19T23:28:15.6847568Z         "impl": {
2026-06-19T23:28:15.6847710Z           "complete": true,
2026-06-19T23:28:15.6847844Z           "evidence": [
2026-06-19T23:28:15.6847967Z             {
2026-06-19T23:28:15.6848143Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.6848273Z               "line": 54
2026-06-19T23:28:15.6848400Z             }
2026-06-19T23:28:15.6848525Z           ]
2026-06-19T23:28:15.6848653Z         },
2026-06-19T23:28:15.6848777Z         "int": {
2026-06-19T23:28:15.6848915Z           "complete": false,
2026-06-19T23:28:15.6849111Z           "evidence": []
2026-06-19T23:28:15.6849240Z         },
2026-06-19T23:28:15.6849363Z         "unit": {
2026-06-19T23:28:15.6849611Z           "complete": true,
2026-06-19T23:28:15.6849736Z           "evidence": [
2026-06-19T23:28:15.6849864Z             {
2026-06-19T23:28:15.6850036Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6850179Z               "line": 1546
2026-06-19T23:28:15.6850302Z             }
2026-06-19T23:28:15.6850435Z           ]
2026-06-19T23:28:15.6850548Z         }
2026-06-19T23:28:15.6850675Z       }
2026-06-19T23:28:15.6850801Z     },
2026-06-19T23:28:15.6850929Z     {
2026-06-19T23:28:15.6851067Z       "id": "REQ-MANIFEST-8",
2026-06-19T23:28:15.6853335Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-19T23:28:15.6853504Z       "requiredStages": [
2026-06-19T23:28:15.6853648Z         "doc",
2026-06-19T23:28:15.6853772Z         "impl",
2026-06-19T23:28:15.6853900Z         "unit",
2026-06-19T23:28:15.6854030Z         "int"
2026-06-19T23:28:15.6854157Z       ],
2026-06-19T23:28:15.6854283Z       "stages": {
2026-06-19T23:28:15.6854416Z         "doc": {
2026-06-19T23:28:15.6854559Z           "complete": true,
2026-06-19T23:28:15.6854688Z           "evidence": [
2026-06-19T23:28:15.6854816Z             {
2026-06-19T23:28:15.6854960Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.6855088Z               "line": 184
2026-06-19T23:28:15.6855213Z             },
2026-06-19T23:28:15.6855341Z             {
2026-06-19T23:28:15.6855504Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.6855637Z               "line": 46
2026-06-19T23:28:15.6855769Z             }
2026-06-19T23:28:15.6855893Z           ]
2026-06-19T23:28:15.6856024Z         },
2026-06-19T23:28:15.6856153Z         "impl": {
2026-06-19T23:28:15.6856292Z           "complete": true,
2026-06-19T23:28:15.6856439Z           "evidence": [
2026-06-19T23:28:15.6856564Z             {
2026-06-19T23:28:15.6856744Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6856873Z               "line": 222
2026-06-19T23:28:15.6856997Z             },
2026-06-19T23:28:15.6857122Z             {
2026-06-19T23:28:15.6857288Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6857416Z               "line": 306
2026-06-19T23:28:15.6857541Z             }
2026-06-19T23:28:15.6857673Z           ]
2026-06-19T23:28:15.6857799Z         },
2026-06-19T23:28:15.6857931Z         "int": {
2026-06-19T23:28:15.6858071Z           "complete": true,
2026-06-19T23:28:15.6858199Z           "evidence": [
2026-06-19T23:28:15.6858327Z             {
2026-06-19T23:28:15.6858504Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-19T23:28:15.6858641Z               "line": 18
2026-06-19T23:28:15.6858765Z             }
2026-06-19T23:28:15.6858893Z           ]
2026-06-19T23:28:15.6859218Z         },
2026-06-19T23:28:15.6859342Z         "unit": {
2026-06-19T23:28:15.6859475Z           "complete": true,
2026-06-19T23:28:15.6859599Z           "evidence": [
2026-06-19T23:28:15.6859724Z             {
2026-06-19T23:28:15.6859899Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.6860034Z               "line": 1564
2026-06-19T23:28:15.6860157Z             },
2026-06-19T23:28:15.6860281Z             {
2026-06-19T23:28:15.6860457Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6860591Z               "line": 316
2026-06-19T23:28:15.6860721Z             },
2026-06-19T23:28:15.6861033Z             {
2026-06-19T23:28:15.6861207Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6861341Z               "line": 332
2026-06-19T23:28:15.6861465Z             },
2026-06-19T23:28:15.6861594Z             {
2026-06-19T23:28:15.6861751Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.6861894Z               "line": 345
2026-06-19T23:28:15.6862018Z             },
2026-06-19T23:28:15.6862147Z             {
2026-06-19T23:28:15.6862319Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6862442Z               "line": 422
2026-06-19T23:28:15.6862557Z             },
2026-06-19T23:28:15.6862686Z             {
2026-06-19T23:28:15.6862858Z               "path": "crates/spt-store/src/proc.rs",
2026-06-19T23:28:15.6862991Z               "line": 436
2026-06-19T23:28:15.6863115Z             }
2026-06-19T23:28:15.6863236Z           ]
2026-06-19T23:28:15.6863362Z         }
2026-06-19T23:28:15.6863488Z       }
2026-06-19T23:28:15.6863625Z     },
2026-06-19T23:28:15.6863752Z     {
2026-06-19T23:28:15.6863886Z       "id": "REQ-MESH-1",
2026-06-19T23:28:15.6866049Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-19T23:28:15.6866220Z       "requiredStages": [
2026-06-19T23:28:15.6866353Z         "impl",
2026-06-19T23:28:15.6866481Z         "unit",
2026-06-19T23:28:15.6866608Z         "int"
2026-06-19T23:28:15.6866737Z       ],
2026-06-19T23:28:15.6866857Z       "stages": {
2026-06-19T23:28:15.6866989Z         "doc": {
2026-06-19T23:28:15.6867133Z           "complete": false,
2026-06-19T23:28:15.6867265Z           "evidence": []
2026-06-19T23:28:15.6867395Z         },
2026-06-19T23:28:15.6867529Z         "impl": {
2026-06-19T23:28:15.6867657Z           "complete": true,
2026-06-19T23:28:15.6867796Z           "evidence": [
2026-06-19T23:28:15.6867924Z             {
2026-06-19T23:28:15.6868101Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.6868233Z               "line": 922
2026-06-19T23:28:15.6868354Z             },
2026-06-19T23:28:15.6868481Z             {
2026-06-19T23:28:15.6868659Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6868791Z               "line": 38
2026-06-19T23:28:15.6868917Z             },
2026-06-19T23:28:15.6872183Z             {
2026-06-19T23:28:15.6872397Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6872550Z               "line": 161
2026-06-19T23:28:15.6872687Z             },
2026-06-19T23:28:15.6872813Z             {
2026-06-19T23:28:15.6873002Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6873137Z               "line": 206
2026-06-19T23:28:15.6873398Z             },
2026-06-19T23:28:15.6873527Z             {
2026-06-19T23:28:15.6873699Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.6873824Z               "line": 57
2026-06-19T23:28:15.6873951Z             },
2026-06-19T23:28:15.6874076Z             {
2026-06-19T23:28:15.6874265Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6874408Z               "line": 24
2026-06-19T23:28:15.6874530Z             },
2026-06-19T23:28:15.6874658Z             {
2026-06-19T23:28:15.6874836Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6874963Z               "line": 142
2026-06-19T23:28:15.6875193Z             },
2026-06-19T23:28:15.6875311Z             {
2026-06-19T23:28:15.6875494Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6875621Z               "line": 162
2026-06-19T23:28:15.6875741Z             }
2026-06-19T23:28:15.6875870Z           ]
2026-06-19T23:28:15.6875999Z         },
2026-06-19T23:28:15.6876122Z         "int": {
2026-06-19T23:28:15.6876251Z           "complete": true,
2026-06-19T23:28:15.6876385Z           "evidence": [
2026-06-19T23:28:15.6876513Z             {
2026-06-19T23:28:15.6876705Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-19T23:28:15.6876828Z               "line": 67
2026-06-19T23:28:15.6876951Z             },
2026-06-19T23:28:15.6877083Z             {
2026-06-19T23:28:15.6877268Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-19T23:28:15.6877403Z               "line": 93
2026-06-19T23:28:15.6877530Z             },
2026-06-19T23:28:15.6877655Z             {
2026-06-19T23:28:15.6877835Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-19T23:28:15.6877965Z               "line": 117
2026-06-19T23:28:15.6878094Z             },
2026-06-19T23:28:15.6878217Z             {
2026-06-19T23:28:15.6878389Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-19T23:28:15.6878522Z               "line": 134
2026-06-19T23:28:15.6878647Z             }
2026-06-19T23:28:15.6878766Z           ]
2026-06-19T23:28:15.6878891Z         },
2026-06-19T23:28:15.6879104Z         "unit": {
2026-06-19T23:28:15.6879239Z           "complete": true,
2026-06-19T23:28:15.6879370Z           "evidence": [
2026-06-19T23:28:15.6879486Z             {
2026-06-19T23:28:15.6879666Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.6879799Z               "line": 427
2026-06-19T23:28:15.6879915Z             },
2026-06-19T23:28:15.6880047Z             {
2026-06-19T23:28:15.6880229Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6880371Z               "line": 376
2026-06-19T23:28:15.6880491Z             },
2026-06-19T23:28:15.6880620Z             {
2026-06-19T23:28:15.6880806Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6880938Z               "line": 412
2026-06-19T23:28:15.6881063Z             },
2026-06-19T23:28:15.6881183Z             {
2026-06-19T23:28:15.6881353Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6881488Z               "line": 427
2026-06-19T23:28:15.6881606Z             },
2026-06-19T23:28:15.6881730Z             {
2026-06-19T23:28:15.6881911Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6882034Z               "line": 438
2026-06-19T23:28:15.6882163Z             },
2026-06-19T23:28:15.6882290Z             {
2026-06-19T23:28:15.6882471Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6882599Z               "line": 449
2026-06-19T23:28:15.6882728Z             },
2026-06-19T23:28:15.6882853Z             {
2026-06-19T23:28:15.6883039Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6883167Z               "line": 460
2026-06-19T23:28:15.6883291Z             },
2026-06-19T23:28:15.6883421Z             {
2026-06-19T23:28:15.6883596Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6883825Z               "line": 496
2026-06-19T23:28:15.6883949Z             },
2026-06-19T23:28:15.6884079Z             {
2026-06-19T23:28:15.6884259Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6884384Z               "line": 519
2026-06-19T23:28:15.6884512Z             },
2026-06-19T23:28:15.6884637Z             {
2026-06-19T23:28:15.6884811Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6884940Z               "line": 546
2026-06-19T23:28:15.6885063Z             }
2026-06-19T23:28:15.6885185Z           ]
2026-06-19T23:28:15.6885424Z         }
2026-06-19T23:28:15.6885547Z       }
2026-06-19T23:28:15.6885667Z     },
2026-06-19T23:28:15.6885800Z     {
2026-06-19T23:28:15.6885935Z       "id": "REQ-MESH-2",
2026-06-19T23:28:15.6888620Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-19T23:28:15.6888787Z       "requiredStages": [
2026-06-19T23:28:15.6888906Z         "impl",
2026-06-19T23:28:15.6889092Z         "unit",
2026-06-19T23:28:15.6889211Z         "int"
2026-06-19T23:28:15.6889340Z       ],
2026-06-19T23:28:15.6889475Z       "stages": {
2026-06-19T23:28:15.6889602Z         "doc": {
2026-06-19T23:28:15.6889741Z           "complete": false,
2026-06-19T23:28:15.6889874Z           "evidence": []
2026-06-19T23:28:15.6889998Z         },
2026-06-19T23:28:15.6890123Z         "impl": {
2026-06-19T23:28:15.6890250Z           "complete": true,
2026-06-19T23:28:15.6890383Z           "evidence": [
2026-06-19T23:28:15.6890503Z             {
2026-06-19T23:28:15.6890669Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.6890799Z               "line": 757
2026-06-19T23:28:15.6890922Z             },
2026-06-19T23:28:15.6891047Z             {
2026-06-19T23:28:15.6891227Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6891371Z               "line": 118
2026-06-19T23:28:15.6891494Z             },
2026-06-19T23:28:15.6891623Z             {
2026-06-19T23:28:15.6891800Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6891937Z               "line": 347
2026-06-19T23:28:15.6892067Z             },
2026-06-19T23:28:15.6892190Z             {
2026-06-19T23:28:15.6892363Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6892495Z               "line": 389
2026-06-19T23:28:15.6892623Z             },
2026-06-19T23:28:15.6892756Z             {
2026-06-19T23:28:15.6892921Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6893050Z               "line": 403
2026-06-19T23:28:15.6893173Z             },
2026-06-19T23:28:15.6893298Z             {
2026-06-19T23:28:15.6893465Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6893584Z               "line": 492
2026-06-19T23:28:15.6893718Z             },
2026-06-19T23:28:15.6893841Z             {
2026-06-19T23:28:15.6894009Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6894136Z               "line": 507
2026-06-19T23:28:15.6894267Z             },
2026-06-19T23:28:15.6894395Z             {
2026-06-19T23:28:15.6894558Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6894790Z               "line": 534
2026-06-19T23:28:15.6894911Z             },
2026-06-19T23:28:15.6895033Z             {
2026-06-19T23:28:15.6895211Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6895348Z               "line": 207
2026-06-19T23:28:15.6895475Z             },
2026-06-19T23:28:15.6895591Z             {
2026-06-19T23:28:15.6895769Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6895899Z               "line": 755
2026-06-19T23:28:15.6896022Z             },
2026-06-19T23:28:15.6896141Z             {
2026-06-19T23:28:15.6896422Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6896561Z               "line": 816
2026-06-19T23:28:15.6896675Z             },
2026-06-19T23:28:15.6896804Z             {
2026-06-19T23:28:15.6896971Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6897100Z               "line": 869
2026-06-19T23:28:15.6897224Z             },
2026-06-19T23:28:15.6897352Z             {
2026-06-19T23:28:15.6897529Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6897658Z               "line": 891
2026-06-19T23:28:15.6897788Z             },
2026-06-19T23:28:15.6897910Z             {
2026-06-19T23:28:15.6898067Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6898189Z               "line": 122
2026-06-19T23:28:15.6898312Z             },
2026-06-19T23:28:15.6898437Z             {
2026-06-19T23:28:15.6898598Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6898727Z               "line": 44
2026-06-19T23:28:15.6898856Z             },
2026-06-19T23:28:15.6899037Z             {
2026-06-19T23:28:15.6899194Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6899333Z               "line": 184
2026-06-19T23:28:15.6899447Z             },
2026-06-19T23:28:15.6899571Z             {
2026-06-19T23:28:15.6899743Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6899867Z               "line": 211
2026-06-19T23:28:15.6899996Z             },
2026-06-19T23:28:15.6900119Z             {
2026-06-19T23:28:15.6900287Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6900425Z               "line": 251
2026-06-19T23:28:15.6900549Z             },
2026-06-19T23:28:15.6900679Z             {
2026-06-19T23:28:15.6900839Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6900967Z               "line": 275
2026-06-19T23:28:15.6901083Z             },
2026-06-19T23:28:15.6901195Z             {
2026-06-19T23:28:15.6901364Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6901487Z               "line": 289
2026-06-19T23:28:15.6901617Z             },
2026-06-19T23:28:15.6901735Z             {
2026-06-19T23:28:15.6901902Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6902031Z               "line": 300
2026-06-19T23:28:15.6902149Z             },
2026-06-19T23:28:15.6902270Z             {
2026-06-19T23:28:15.6902427Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6902551Z               "line": 313
2026-06-19T23:28:15.6902675Z             }
2026-06-19T23:28:15.6902803Z           ]
2026-06-19T23:28:15.6902928Z         },
2026-06-19T23:28:15.6903055Z         "int": {
2026-06-19T23:28:15.6903198Z           "complete": true,
2026-06-19T23:28:15.6903325Z           "evidence": [
2026-06-19T23:28:15.6903457Z             {
2026-06-19T23:28:15.6903640Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-19T23:28:15.6903777Z               "line": 116
2026-06-19T23:28:15.6903897Z             },
2026-06-19T23:28:15.6904021Z             {
2026-06-19T23:28:15.6904202Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-19T23:28:15.6904330Z               "line": 181
2026-06-19T23:28:15.6904459Z             }
2026-06-19T23:28:15.6904579Z           ]
2026-06-19T23:28:15.6904803Z         },
2026-06-19T23:28:15.6904935Z         "unit": {
2026-06-19T23:28:15.6905074Z           "complete": true,
2026-06-19T23:28:15.6905208Z           "evidence": [
2026-06-19T23:28:15.6905331Z             {
2026-06-19T23:28:15.6905504Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6905632Z               "line": 999
2026-06-19T23:28:15.6905757Z             },
2026-06-19T23:28:15.6905885Z             {
2026-06-19T23:28:15.6906060Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6906202Z               "line": 1016
2026-06-19T23:28:15.6906329Z             },
2026-06-19T23:28:15.6906559Z             {
2026-06-19T23:28:15.6906730Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6906860Z               "line": 1024
2026-06-19T23:28:15.6906982Z             },
2026-06-19T23:28:15.6907103Z             {
2026-06-19T23:28:15.6907273Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6907394Z               "line": 1048
2026-06-19T23:28:15.6907527Z             },
2026-06-19T23:28:15.6907645Z             {
2026-06-19T23:28:15.6907836Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.6907965Z               "line": 1499
2026-06-19T23:28:15.6908090Z             },
2026-06-19T23:28:15.6908213Z             {
2026-06-19T23:28:15.6908372Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6908508Z               "line": 347
2026-06-19T23:28:15.6908632Z             },
2026-06-19T23:28:15.6908759Z             {
2026-06-19T23:28:15.6908929Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6909144Z               "line": 370
2026-06-19T23:28:15.6909268Z             },
2026-06-19T23:28:15.6909392Z             {
2026-06-19T23:28:15.6909563Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6909693Z               "line": 407
2026-06-19T23:28:15.6909821Z             },
2026-06-19T23:28:15.6909951Z             {
2026-06-19T23:28:15.6910117Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6910256Z               "line": 431
2026-06-19T23:28:15.6910379Z             },
2026-06-19T23:28:15.6910498Z             {
2026-06-19T23:28:15.6910660Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6910784Z               "line": 483
2026-06-19T23:28:15.6910910Z             },
2026-06-19T23:28:15.6911037Z             {
2026-06-19T23:28:15.6911200Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6911332Z               "line": 499
2026-06-19T23:28:15.6911455Z             },
2026-06-19T23:28:15.6911585Z             {
2026-06-19T23:28:15.6911746Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6911885Z               "line": 514
2026-06-19T23:28:15.6912000Z             },
2026-06-19T23:28:15.6912128Z             {
2026-06-19T23:28:15.6912291Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6912423Z               "line": 531
2026-06-19T23:28:15.6912553Z             }
2026-06-19T23:28:15.6912662Z           ]
2026-06-19T23:28:15.6912786Z         }
2026-06-19T23:28:15.6912901Z       }
2026-06-19T23:28:15.6913020Z     },
2026-06-19T23:28:15.6913145Z     {
2026-06-19T23:28:15.6913272Z       "id": "REQ-MESH-3",
2026-06-19T23:28:15.6915029Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-19T23:28:15.6915186Z       "requiredStages": [
2026-06-19T23:28:15.6915430Z         "impl",
2026-06-19T23:28:15.6915553Z         "unit",
2026-06-19T23:28:15.6915683Z         "int"
2026-06-19T23:28:15.6915806Z       ],
2026-06-19T23:28:15.6915934Z       "stages": {
2026-06-19T23:28:15.6916064Z         "doc": {
2026-06-19T23:28:15.6916202Z           "complete": false,
2026-06-19T23:28:15.6916332Z           "evidence": []
2026-06-19T23:28:15.6916450Z         },
2026-06-19T23:28:15.6916572Z         "impl": {
2026-06-19T23:28:15.6916711Z           "complete": true,
2026-06-19T23:28:15.6916837Z           "evidence": [
2026-06-19T23:28:15.6916961Z             {
2026-06-19T23:28:15.6917133Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6917372Z               "line": 641
2026-06-19T23:28:15.6917494Z             }
2026-06-19T23:28:15.6917620Z           ]
2026-06-19T23:28:15.6917749Z         },
2026-06-19T23:28:15.6917872Z         "int": {
2026-06-19T23:28:15.6918006Z           "complete": true,
2026-06-19T23:28:15.6918143Z           "evidence": [
2026-06-19T23:28:15.6918269Z             {
2026-06-19T23:28:15.6918439Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-19T23:28:15.6918574Z               "line": 373
2026-06-19T23:28:15.6918696Z             },
2026-06-19T23:28:15.6918816Z             {
2026-06-19T23:28:15.6919063Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-19T23:28:15.6919192Z               "line": 436
2026-06-19T23:28:15.6919310Z             }
2026-06-19T23:28:15.6919432Z           ]
2026-06-19T23:28:15.6919557Z         },
2026-06-19T23:28:15.6919681Z         "unit": {
2026-06-19T23:28:15.6919809Z           "complete": true,
2026-06-19T23:28:15.6919952Z           "evidence": [
2026-06-19T23:28:15.6920071Z             {
2026-06-19T23:28:15.6920239Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.6920366Z               "line": 910
2026-06-19T23:28:15.6920497Z             }
2026-06-19T23:28:15.6920615Z           ]
2026-06-19T23:28:15.6920739Z         }
2026-06-19T23:28:15.6920869Z       }
2026-06-19T23:28:15.6920987Z     },
2026-06-19T23:28:15.6921112Z     {
2026-06-19T23:28:15.6921244Z       "id": "REQ-MESH-4",
2026-06-19T23:28:15.6923532Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-19T23:28:15.6923691Z       "requiredStages": [
2026-06-19T23:28:15.6923818Z         "impl",
2026-06-19T23:28:15.6923952Z         "unit",
2026-06-19T23:28:15.6924081Z         "int"
2026-06-19T23:28:15.6924204Z       ],
2026-06-19T23:28:15.6924332Z       "stages": {
2026-06-19T23:28:15.6924450Z         "doc": {
2026-06-19T23:28:15.6924592Z           "complete": false,
2026-06-19T23:28:15.6924731Z           "evidence": []
2026-06-19T23:28:15.6924854Z         },
2026-06-19T23:28:15.6924979Z         "impl": {
2026-06-19T23:28:15.6925107Z           "complete": true,
2026-06-19T23:28:15.6925240Z           "evidence": [
2026-06-19T23:28:15.6925361Z             {
2026-06-19T23:28:15.6925555Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-19T23:28:15.6925694Z               "line": 33
2026-06-19T23:28:15.6925822Z             },
2026-06-19T23:28:15.6925952Z             {
2026-06-19T23:28:15.6926128Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6926272Z               "line": 68
2026-06-19T23:28:15.6926394Z             },
2026-06-19T23:28:15.6926648Z             {
2026-06-19T23:28:15.6926829Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6926963Z               "line": 111
2026-06-19T23:28:15.6927085Z             },
2026-06-19T23:28:15.6927209Z             {
2026-06-19T23:28:15.6927388Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6927517Z               "line": 462
2026-06-19T23:28:15.6927646Z             },
2026-06-19T23:28:15.6927778Z             {
2026-06-19T23:28:15.6927946Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6928074Z               "line": 711
2026-06-19T23:28:15.6928194Z             },
2026-06-19T23:28:15.6928442Z             {
2026-06-19T23:28:15.6928618Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6928742Z               "line": 725
2026-06-19T23:28:15.6928871Z             },
2026-06-19T23:28:15.6929081Z             {
2026-06-19T23:28:15.6929257Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.6929391Z               "line": 132
2026-06-19T23:28:15.6929520Z             },
2026-06-19T23:28:15.6929637Z             {
2026-06-19T23:28:15.6929809Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-19T23:28:15.6929935Z               "line": 26
2026-06-19T23:28:15.6930064Z             },
2026-06-19T23:28:15.6930194Z             {
2026-06-19T23:28:15.6930359Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-19T23:28:15.6930494Z               "line": 97
2026-06-19T23:28:15.6930612Z             },
2026-06-19T23:28:15.6930737Z             {
2026-06-19T23:28:15.6930908Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-19T23:28:15.6931038Z               "line": 119
2026-06-19T23:28:15.6931156Z             },
2026-06-19T23:28:15.6931270Z             {
2026-06-19T23:28:15.6931438Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6931566Z               "line": 82
2026-06-19T23:28:15.6931691Z             },
2026-06-19T23:28:15.6931818Z             {
2026-06-19T23:28:15.6931982Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6932119Z               "line": 111
2026-06-19T23:28:15.6932243Z             },
2026-06-19T23:28:15.6932369Z             {
2026-06-19T23:28:15.6932533Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6932662Z               "line": 232
2026-06-19T23:28:15.6932791Z             },
2026-06-19T23:28:15.6932919Z             {
2026-06-19T23:28:15.6933087Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6933219Z               "line": 245
2026-06-19T23:28:15.6933340Z             },
2026-06-19T23:28:15.6933477Z             {
2026-06-19T23:28:15.6933631Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6933764Z               "line": 4637
2026-06-19T23:28:15.6933882Z             }
2026-06-19T23:28:15.6934016Z           ]
2026-06-19T23:28:15.6934135Z         },
2026-06-19T23:28:15.6934270Z         "int": {
2026-06-19T23:28:15.6934416Z           "complete": true,
2026-06-19T23:28:15.6934546Z           "evidence": [
2026-06-19T23:28:15.6934678Z             {
2026-06-19T23:28:15.6934864Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-19T23:28:15.6935001Z               "line": 98
2026-06-19T23:28:15.6935123Z             },
2026-06-19T23:28:15.6935253Z             {
2026-06-19T23:28:15.6935419Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-19T23:28:15.6935548Z               "line": 140
2026-06-19T23:28:15.6935677Z             }
2026-06-19T23:28:15.6935800Z           ]
2026-06-19T23:28:15.6935930Z         },
2026-06-19T23:28:15.6936053Z         "unit": {
2026-06-19T23:28:15.6936202Z           "complete": true,
2026-06-19T23:28:15.6936330Z           "evidence": [
2026-06-19T23:28:15.6936454Z             {
2026-06-19T23:28:15.6936631Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-19T23:28:15.6936764Z               "line": 178
2026-06-19T23:28:15.6936893Z             },
2026-06-19T23:28:15.6937128Z             {
2026-06-19T23:28:15.6937312Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-19T23:28:15.6937447Z               "line": 242
2026-06-19T23:28:15.6937565Z             },
2026-06-19T23:28:15.6937697Z             {
2026-06-19T23:28:15.6937868Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6937995Z               "line": 1079
2026-06-19T23:28:15.6938110Z             },
2026-06-19T23:28:15.6938239Z             {
2026-06-19T23:28:15.6938416Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6938545Z               "line": 1109
2026-06-19T23:28:15.6938764Z             },
2026-06-19T23:28:15.6938878Z             {
2026-06-19T23:28:15.6939122Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-19T23:28:15.6939259Z               "line": 1129
2026-06-19T23:28:15.6939403Z             },
2026-06-19T23:28:15.6939535Z             {
2026-06-19T23:28:15.6939722Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-19T23:28:15.6939854Z               "line": 602
2026-06-19T23:28:15.6939980Z             },
2026-06-19T23:28:15.6940104Z             {
2026-06-19T23:28:15.6940269Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-19T23:28:15.6940407Z               "line": 148
2026-06-19T23:28:15.6940533Z             },
2026-06-19T23:28:15.6940658Z             {
2026-06-19T23:28:15.6940825Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-19T23:28:15.6940948Z               "line": 169
2026-06-19T23:28:15.6941072Z             },
2026-06-19T23:28:15.6941201Z             {
2026-06-19T23:28:15.6941369Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-19T23:28:15.6941496Z               "line": 181
2026-06-19T23:28:15.6941621Z             },
2026-06-19T23:28:15.6941744Z             {
2026-06-19T23:28:15.6941907Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-19T23:28:15.6942036Z               "line": 202
2026-06-19T23:28:15.6942169Z             },
2026-06-19T23:28:15.6942285Z             {
2026-06-19T23:28:15.6942474Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6942600Z               "line": 375
2026-06-19T23:28:15.6942731Z             },
2026-06-19T23:28:15.6942857Z             {
2026-06-19T23:28:15.6943022Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.6943145Z               "line": 407
2026-06-19T23:28:15.6943266Z             },
2026-06-19T23:28:15.6943403Z             {
2026-06-19T23:28:15.6943556Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6943694Z               "line": 10024
2026-06-19T23:28:15.6943823Z             }
2026-06-19T23:28:15.6943947Z           ]
2026-06-19T23:28:15.6944065Z         }
2026-06-19T23:28:15.6944191Z       }
2026-06-19T23:28:15.6944338Z     },
2026-06-19T23:28:15.6944447Z     {
2026-06-19T23:28:15.6944590Z       "id": "REQ-MESH-5",
2026-06-19T23:28:15.6946046Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-19T23:28:15.6946209Z       "requiredStages": [
2026-06-19T23:28:15.6946341Z         "impl",
2026-06-19T23:28:15.6946471Z         "unit"
2026-06-19T23:28:15.6946594Z       ],
2026-06-19T23:28:15.6946719Z       "stages": {
2026-06-19T23:28:15.6946848Z         "doc": {
2026-06-19T23:28:15.6946995Z           "complete": false,
2026-06-19T23:28:15.6947119Z           "evidence": []
2026-06-19T23:28:15.6947267Z         },
2026-06-19T23:28:15.6947397Z         "impl": {
2026-06-19T23:28:15.6947543Z           "complete": true,
2026-06-19T23:28:15.6947673Z           "evidence": [
2026-06-19T23:28:15.6947906Z             {
2026-06-19T23:28:15.6948078Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.6948229Z               "line": 61
2026-06-19T23:28:15.6948348Z             },
2026-06-19T23:28:15.6948470Z             {
2026-06-19T23:28:15.6948646Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.6948776Z               "line": 109
2026-06-19T23:28:15.6948889Z             },
2026-06-19T23:28:15.6949095Z             {
2026-06-19T23:28:15.6949291Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.6949434Z               "line": 104
2026-06-19T23:28:15.6949662Z             },
2026-06-19T23:28:15.6949781Z             {
2026-06-19T23:28:15.6949954Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.6950090Z               "line": 105
2026-06-19T23:28:15.6950216Z             },
2026-06-19T23:28:15.6950358Z             {
2026-06-19T23:28:15.6950530Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6950678Z               "line": 85
2026-06-19T23:28:15.6950814Z             },
2026-06-19T23:28:15.6950943Z             {
2026-06-19T23:28:15.6951136Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6951271Z               "line": 250
2026-06-19T23:28:15.6951394Z             },
2026-06-19T23:28:15.6951528Z             {
2026-06-19T23:28:15.6951704Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6951833Z               "line": 314
2026-06-19T23:28:15.6951962Z             },
2026-06-19T23:28:15.6952080Z             {
2026-06-19T23:28:15.6952267Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6952390Z               "line": 767
2026-06-19T23:28:15.6952520Z             },
2026-06-19T23:28:15.6952634Z             {
2026-06-19T23:28:15.6952787Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.6952925Z               "line": 101
2026-06-19T23:28:15.6953053Z             },
2026-06-19T23:28:15.6953179Z             {
2026-06-19T23:28:15.6953340Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6953469Z               "line": 193
2026-06-19T23:28:15.6953592Z             }
2026-06-19T23:28:15.6953719Z           ]
2026-06-19T23:28:15.6953845Z         },
2026-06-19T23:28:15.6953963Z         "int": {
2026-06-19T23:28:15.6954106Z           "complete": false,
2026-06-19T23:28:15.6954245Z           "evidence": []
2026-06-19T23:28:15.6954363Z         },
2026-06-19T23:28:15.6954493Z         "unit": {
2026-06-19T23:28:15.6954625Z           "complete": true,
2026-06-19T23:28:15.6954756Z           "evidence": [
2026-06-19T23:28:15.6954879Z             {
2026-06-19T23:28:15.6955056Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.6955188Z               "line": 1009
2026-06-19T23:28:15.6955313Z             },
2026-06-19T23:28:15.6955438Z             {
2026-06-19T23:28:15.6955603Z               "path": "crates/spt-store/src/roster.rs",
2026-06-19T23:28:15.6955739Z               "line": 462
2026-06-19T23:28:15.6955856Z             }
2026-06-19T23:28:15.6955989Z           ]
2026-06-19T23:28:15.6956116Z         }
2026-06-19T23:28:15.6956248Z       }
2026-06-19T23:28:15.6956373Z     },
2026-06-19T23:28:15.6956501Z     {
2026-06-19T23:28:15.6956640Z       "id": "REQ-MESH-6",
2026-06-19T23:28:15.6957933Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-19T23:28:15.6958079Z       "requiredStages": [
2026-06-19T23:28:15.6958204Z         "impl",
2026-06-19T23:28:15.6958333Z         "unit"
2026-06-19T23:28:15.6958461Z       ],
2026-06-19T23:28:15.6958685Z       "stages": {
2026-06-19T23:28:15.6958807Z         "doc": {
2026-06-19T23:28:15.6959021Z           "complete": false,
2026-06-19T23:28:15.6959153Z           "evidence": []
2026-06-19T23:28:15.6959279Z         },
2026-06-19T23:28:15.6959406Z         "impl": {
2026-06-19T23:28:15.6959551Z           "complete": true,
2026-06-19T23:28:15.6959674Z           "evidence": [
2026-06-19T23:28:15.6959802Z             {
2026-06-19T23:28:15.6959951Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6960083Z               "line": 4153
2026-06-19T23:28:15.6960204Z             }
2026-06-19T23:28:15.6960322Z           ]
2026-06-19T23:28:15.6960551Z         },
2026-06-19T23:28:15.6960670Z         "int": {
2026-06-19T23:28:15.6960810Z           "complete": false,
2026-06-19T23:28:15.6960946Z           "evidence": []
2026-06-19T23:28:15.6961076Z         },
2026-06-19T23:28:15.6961200Z         "unit": {
2026-06-19T23:28:15.6961341Z           "complete": true,
2026-06-19T23:28:15.6961471Z           "evidence": [
2026-06-19T23:28:15.6961597Z             {
2026-06-19T23:28:15.6961744Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6961864Z               "line": 10574
2026-06-19T23:28:15.6961996Z             },
2026-06-19T23:28:15.6962122Z             {
2026-06-19T23:28:15.6962274Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6962403Z               "line": 10601
2026-06-19T23:28:15.6962531Z             },
2026-06-19T23:28:15.6962659Z             {
2026-06-19T23:28:15.6962803Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6962951Z               "line": 10625
2026-06-19T23:28:15.6963071Z             }
2026-06-19T23:28:15.6963204Z           ]
2026-06-19T23:28:15.6963328Z         }
2026-06-19T23:28:15.6963452Z       }
2026-06-19T23:28:15.6963585Z     },
2026-06-19T23:28:15.6963706Z     {
2026-06-19T23:28:15.6963842Z       "id": "REQ-MIGRATE-1",
2026-06-19T23:28:15.6964063Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-19T23:28:15.6964208Z       "requiredStages": [],
2026-06-19T23:28:15.6964342Z       "stages": {
2026-06-19T23:28:15.6964467Z         "doc": {
2026-06-19T23:28:15.6964609Z           "complete": false,
2026-06-19T23:28:15.6964738Z           "evidence": []
2026-06-19T23:28:15.6964866Z         },
2026-06-19T23:28:15.6964987Z         "impl": {
2026-06-19T23:28:15.6965125Z           "complete": false,
2026-06-19T23:28:15.6965262Z           "evidence": []
2026-06-19T23:28:15.6965387Z         },
2026-06-19T23:28:15.6965510Z         "int": {
2026-06-19T23:28:15.6965650Z           "complete": false,
2026-06-19T23:28:15.6965792Z           "evidence": []
2026-06-19T23:28:15.6965917Z         },
2026-06-19T23:28:15.6966049Z         "unit": {
2026-06-19T23:28:15.6966193Z           "complete": false,
2026-06-19T23:28:15.6966317Z           "evidence": []
2026-06-19T23:28:15.6966444Z         }
2026-06-19T23:28:15.6966577Z       }
2026-06-19T23:28:15.6966732Z     },
2026-06-19T23:28:15.6966856Z     {
2026-06-19T23:28:15.6966996Z       "id": "REQ-MSG-1",
2026-06-19T23:28:15.6967500Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-19T23:28:15.6967639Z       "requiredStages": [
2026-06-19T23:28:15.6967776Z         "impl",
2026-06-19T23:28:15.6967902Z         "unit",
2026-06-19T23:28:15.6968025Z         "int"
2026-06-19T23:28:15.6968144Z       ],
2026-06-19T23:28:15.6968282Z       "stages": {
2026-06-19T23:28:15.6968411Z         "doc": {
2026-06-19T23:28:15.6968550Z           "complete": false,
2026-06-19T23:28:15.6968678Z           "evidence": []
2026-06-19T23:28:15.6968808Z         },
2026-06-19T23:28:15.6968930Z         "impl": {
2026-06-19T23:28:15.6969137Z           "complete": true,
2026-06-19T23:28:15.6969278Z           "evidence": [
2026-06-19T23:28:15.6969396Z             {
2026-06-19T23:28:15.6969558Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6969815Z               "line": 28
2026-06-19T23:28:15.6969938Z             },
2026-06-19T23:28:15.6970062Z             {
2026-06-19T23:28:15.6970220Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6970357Z               "line": 94
2026-06-19T23:28:15.6970491Z             },
2026-06-19T23:28:15.6970629Z             {
2026-06-19T23:28:15.6970797Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6970915Z               "line": 127
2026-06-19T23:28:15.6971045Z             },
2026-06-19T23:28:15.6971154Z             {
2026-06-19T23:28:15.6971326Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6971564Z               "line": 149
2026-06-19T23:28:15.6971694Z             },
2026-06-19T23:28:15.6971821Z             {
2026-06-19T23:28:15.6971973Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6972110Z               "line": 174
2026-06-19T23:28:15.6972242Z             },
2026-06-19T23:28:15.6975503Z             {
2026-06-19T23:28:15.6975741Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-19T23:28:15.6975871Z               "line": 18
2026-06-19T23:28:15.6976014Z             },
2026-06-19T23:28:15.6976137Z             {
2026-06-19T23:28:15.6976309Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.6976448Z               "line": 13
2026-06-19T23:28:15.6976572Z             },
2026-06-19T23:28:15.6976691Z             {
2026-06-19T23:28:15.6976854Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.6976990Z               "line": 62
2026-06-19T23:28:15.6977114Z             },
2026-06-19T23:28:15.6977246Z             {
2026-06-19T23:28:15.6977397Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.6977517Z               "line": 13
2026-06-19T23:28:15.6977654Z             }
2026-06-19T23:28:15.6977779Z           ]
2026-06-19T23:28:15.6977904Z         },
2026-06-19T23:28:15.6978027Z         "int": {
2026-06-19T23:28:15.6978171Z           "complete": true,
2026-06-19T23:28:15.6978312Z           "evidence": [
2026-06-19T23:28:15.6978438Z             {
2026-06-19T23:28:15.6978632Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-19T23:28:15.6978757Z               "line": 9
2026-06-19T23:28:15.6978886Z             },
2026-06-19T23:28:15.6979101Z             {
2026-06-19T23:28:15.6979295Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-19T23:28:15.6979425Z               "line": 56
2026-06-19T23:28:15.6979553Z             },
2026-06-19T23:28:15.6979683Z             {
2026-06-19T23:28:15.6979866Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-19T23:28:15.6980009Z               "line": 113
2026-06-19T23:28:15.6980137Z             }
2026-06-19T23:28:15.6980264Z           ]
2026-06-19T23:28:15.6980385Z         },
2026-06-19T23:28:15.6980503Z         "unit": {
2026-06-19T23:28:15.6980646Z           "complete": true,
2026-06-19T23:28:15.6980776Z           "evidence": [
2026-06-19T23:28:15.6980899Z             {
2026-06-19T23:28:15.6981051Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6981194Z               "line": 203
2026-06-19T23:28:15.6981319Z             },
2026-06-19T23:28:15.6981443Z             {
2026-06-19T23:28:15.6981610Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6981747Z               "line": 232
2026-06-19T23:28:15.6981881Z             },
2026-06-19T23:28:15.6982006Z             {
2026-06-19T23:28:15.6982172Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6982297Z               "line": 277
2026-06-19T23:28:15.6982419Z             },
2026-06-19T23:28:15.6982552Z             {
2026-06-19T23:28:15.6982708Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6982835Z               "line": 300
2026-06-19T23:28:15.6982966Z             },
2026-06-19T23:28:15.6983098Z             {
2026-06-19T23:28:15.6983266Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-19T23:28:15.6983543Z               "line": 325
2026-06-19T23:28:15.6983671Z             },
2026-06-19T23:28:15.6983794Z             {
2026-06-19T23:28:15.6983966Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-19T23:28:15.6984099Z               "line": 204
2026-06-19T23:28:15.6984229Z             },
2026-06-19T23:28:15.6984357Z             {
2026-06-19T23:28:15.6984516Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-19T23:28:15.6984643Z               "line": 237
2026-06-19T23:28:15.6984768Z             },
2026-06-19T23:28:15.6984892Z             {
2026-06-19T23:28:15.6985044Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-19T23:28:15.6985286Z               "line": 251
2026-06-19T23:28:15.6985415Z             },
2026-06-19T23:28:15.6985540Z             {
2026-06-19T23:28:15.6985710Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-19T23:28:15.6985835Z               "line": 263
2026-06-19T23:28:15.6985958Z             },
2026-06-19T23:28:15.6986093Z             {
2026-06-19T23:28:15.6986245Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.6986383Z               "line": 162
2026-06-19T23:28:15.6986507Z             },
2026-06-19T23:28:15.6986635Z             {
2026-06-19T23:28:15.6986793Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-19T23:28:15.6986926Z               "line": 242
2026-06-19T23:28:15.6987047Z             },
2026-06-19T23:28:15.6987165Z             {
2026-06-19T23:28:15.6987322Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.6987456Z               "line": 134
2026-06-19T23:28:15.6987574Z             },
2026-06-19T23:28:15.6987703Z             {
2026-06-19T23:28:15.6987858Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.6987986Z               "line": 153
2026-06-19T23:28:15.6988111Z             }
2026-06-19T23:28:15.6988238Z           ]
2026-06-19T23:28:15.6988363Z         }
2026-06-19T23:28:15.6988492Z       }
2026-06-19T23:28:15.6988615Z     },
2026-06-19T23:28:15.6988740Z     {
2026-06-19T23:28:15.6988877Z       "id": "REQ-MSG-2",
2026-06-19T23:28:15.6989284Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-19T23:28:15.6989416Z       "requiredStages": [
2026-06-19T23:28:15.6989540Z         "impl",
2026-06-19T23:28:15.6989666Z         "unit"
2026-06-19T23:28:15.6989784Z       ],
2026-06-19T23:28:15.6989914Z       "stages": {
2026-06-19T23:28:15.6990037Z         "doc": {
2026-06-19T23:28:15.6990170Z           "complete": false,
2026-06-19T23:28:15.6990300Z           "evidence": []
2026-06-19T23:28:15.6990426Z         },
2026-06-19T23:28:15.6990579Z         "impl": {
2026-06-19T23:28:15.6990711Z           "complete": true,
2026-06-19T23:28:15.6990848Z           "evidence": [
2026-06-19T23:28:15.6990978Z             {
2026-06-19T23:28:15.6991130Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6991265Z               "line": 11
2026-06-19T23:28:15.6991378Z             },
2026-06-19T23:28:15.6991492Z             {
2026-06-19T23:28:15.6991650Z               "path": "crates/spt/src/main.rs",
2026-06-19T23:28:15.6991778Z               "line": 8
2026-06-19T23:28:15.6991903Z             }
2026-06-19T23:28:15.6992022Z           ]
2026-06-19T23:28:15.6992146Z         },
2026-06-19T23:28:15.6992274Z         "int": {
2026-06-19T23:28:15.6992413Z           "complete": false,
2026-06-19T23:28:15.6992543Z           "evidence": []
2026-06-19T23:28:15.6992665Z         },
2026-06-19T23:28:15.6992791Z         "unit": {
2026-06-19T23:28:15.6992927Z           "complete": true,
2026-06-19T23:28:15.6993059Z           "evidence": [
2026-06-19T23:28:15.6993189Z             {
2026-06-19T23:28:15.6993334Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6993463Z               "line": 7689
2026-06-19T23:28:15.6993592Z             },
2026-06-19T23:28:15.6993720Z             {
2026-06-19T23:28:15.6993869Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6994103Z               "line": 7731
2026-06-19T23:28:15.6994222Z             },
2026-06-19T23:28:15.6994349Z             {
2026-06-19T23:28:15.6994503Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6994631Z               "line": 7780
2026-06-19T23:28:15.6994757Z             },
2026-06-19T23:28:15.6994880Z             {
2026-06-19T23:28:15.6995032Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6995165Z               "line": 7803
2026-06-19T23:28:15.6995290Z             },
2026-06-19T23:28:15.6995405Z             {
2026-06-19T23:28:15.6995556Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6995681Z               "line": 9779
2026-06-19T23:28:15.6995899Z             },
2026-06-19T23:28:15.6996028Z             {
2026-06-19T23:28:15.6996175Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6996304Z               "line": 9788
2026-06-19T23:28:15.6996428Z             },
2026-06-19T23:28:15.6996561Z             {
2026-06-19T23:28:15.6996705Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.6996838Z               "line": 9802
2026-06-19T23:28:15.6996967Z             }
2026-06-19T23:28:15.6997096Z           ]
2026-06-19T23:28:15.6997219Z         }
2026-06-19T23:28:15.6997344Z       }
2026-06-19T23:28:15.6997472Z     },
2026-06-19T23:28:15.6997602Z     {
2026-06-19T23:28:15.6997730Z       "id": "REQ-MSG-3",
2026-06-19T23:28:15.6998172Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-19T23:28:15.6998315Z       "requiredStages": [
2026-06-19T23:28:15.6998441Z         "impl",
2026-06-19T23:28:15.6998570Z         "unit",
2026-06-19T23:28:15.6998700Z         "int"
2026-06-19T23:28:15.6998808Z       ],
2026-06-19T23:28:15.6998933Z       "stages": {
2026-06-19T23:28:15.6999147Z         "doc": {
2026-06-19T23:28:15.6999286Z           "complete": false,
2026-06-19T23:28:15.6999409Z           "evidence": []
2026-06-19T23:28:15.6999539Z         },
2026-06-19T23:28:15.6999672Z         "impl": {
2026-06-19T23:28:15.6999810Z           "complete": true,
2026-06-19T23:28:15.6999939Z           "evidence": [
2026-06-19T23:28:15.7000067Z             {
2026-06-19T23:28:15.7000235Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-19T23:28:15.7000364Z               "line": 19
2026-06-19T23:28:15.7000479Z             },
2026-06-19T23:28:15.7000606Z             {
2026-06-19T23:28:15.7000774Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7000898Z               "line": 21
2026-06-19T23:28:15.7001030Z             },
2026-06-19T23:28:15.7001153Z             {
2026-06-19T23:28:15.7001313Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7001447Z               "line": 48
2026-06-19T23:28:15.7001572Z             },
2026-06-19T23:28:15.7001704Z             {
2026-06-19T23:28:15.7001853Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7001990Z               "line": 172
2026-06-19T23:28:15.7002110Z             }
2026-06-19T23:28:15.7002235Z           ]
2026-06-19T23:28:15.7002362Z         },
2026-06-19T23:28:15.7002492Z         "int": {
2026-06-19T23:28:15.7002634Z           "complete": true,
2026-06-19T23:28:15.7002759Z           "evidence": [
2026-06-19T23:28:15.7002881Z             {
2026-06-19T23:28:15.7003074Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-19T23:28:15.7003196Z               "line": 10
2026-06-19T23:28:15.7003316Z             },
2026-06-19T23:28:15.7003441Z             {
2026-06-19T23:28:15.7003629Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-19T23:28:15.7003759Z               "line": 56
2026-06-19T23:28:15.7003880Z             }
2026-06-19T23:28:15.7004009Z           ]
2026-06-19T23:28:15.7004134Z         },
2026-06-19T23:28:15.7004261Z         "unit": {
2026-06-19T23:28:15.7004405Z           "complete": true,
2026-06-19T23:28:15.7004538Z           "evidence": [
2026-06-19T23:28:15.7004762Z             {
2026-06-19T23:28:15.7004929Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7005063Z               "line": 226
2026-06-19T23:28:15.7005181Z             },
2026-06-19T23:28:15.7005307Z             {
2026-06-19T23:28:15.7005463Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7005602Z               "line": 245
2026-06-19T23:28:15.7005725Z             },
2026-06-19T23:28:15.7005845Z             {
2026-06-19T23:28:15.7005994Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7006135Z               "line": 268
2026-06-19T23:28:15.7006270Z             }
2026-06-19T23:28:15.7006392Z           ]
2026-06-19T23:28:15.7006621Z         }
2026-06-19T23:28:15.7006750Z       }
2026-06-19T23:28:15.7006874Z     },
2026-06-19T23:28:15.7006998Z     {
2026-06-19T23:28:15.7007135Z       "id": "REQ-MSG-4",
2026-06-19T23:28:15.7008061Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-19T23:28:15.7008205Z       "requiredStages": [
2026-06-19T23:28:15.7008337Z         "impl",
2026-06-19T23:28:15.7008457Z         "unit",
2026-06-19T23:28:15.7008586Z         "int"
2026-06-19T23:28:15.7008708Z       ],
2026-06-19T23:28:15.7008842Z       "stages": {
2026-06-19T23:28:15.7009044Z         "doc": {
2026-06-19T23:28:15.7009178Z           "complete": false,
2026-06-19T23:28:15.7009321Z           "evidence": []
2026-06-19T23:28:15.7009440Z         },
2026-06-19T23:28:15.7009565Z         "impl": {
2026-06-19T23:28:15.7009707Z           "complete": true,
2026-06-19T23:28:15.7009846Z           "evidence": [
2026-06-19T23:28:15.7009969Z             {
2026-06-19T23:28:15.7010132Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7010260Z               "line": 19
2026-06-19T23:28:15.7010384Z             },
2026-06-19T23:28:15.7010508Z             {
2026-06-19T23:28:15.7010670Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7010805Z               "line": 46
2026-06-19T23:28:15.7010933Z             },
2026-06-19T23:28:15.7011049Z             {
2026-06-19T23:28:15.7011214Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7011348Z               "line": 528
2026-06-19T23:28:15.7011467Z             },
2026-06-19T23:28:15.7011590Z             {
2026-06-19T23:28:15.7011732Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7011874Z               "line": 3082
2026-06-19T23:28:15.7012002Z             }
2026-06-19T23:28:15.7012122Z           ]
2026-06-19T23:28:15.7012245Z         },
2026-06-19T23:28:15.7012365Z         "int": {
2026-06-19T23:28:15.7012498Z           "complete": true,
2026-06-19T23:28:15.7012622Z           "evidence": [
2026-06-19T23:28:15.7012751Z             {
2026-06-19T23:28:15.7012923Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-19T23:28:15.7013043Z               "line": 98
2026-06-19T23:28:15.7013170Z             },
2026-06-19T23:28:15.7013295Z             {
2026-06-19T23:28:15.7013466Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-19T23:28:15.7013601Z               "line": 128
2026-06-19T23:28:15.7013729Z             }
2026-06-19T23:28:15.7013852Z           ]
2026-06-19T23:28:15.7013978Z         },
2026-06-19T23:28:15.7014104Z         "unit": {
2026-06-19T23:28:15.7014242Z           "complete": true,
2026-06-19T23:28:15.7014375Z           "evidence": [
2026-06-19T23:28:15.7014502Z             {
2026-06-19T23:28:15.7014670Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7014802Z               "line": 68
2026-06-19T23:28:15.7014932Z             },
2026-06-19T23:28:15.7015051Z             {
2026-06-19T23:28:15.7015208Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7015342Z               "line": 79
2026-06-19T23:28:15.7015465Z             },
2026-06-19T23:28:15.7015736Z             {
2026-06-19T23:28:15.7015896Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7016028Z               "line": 90
2026-06-19T23:28:15.7016158Z             },
2026-06-19T23:28:15.7016285Z             {
2026-06-19T23:28:15.7016433Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7016572Z               "line": 151
2026-06-19T23:28:15.7016700Z             }
2026-06-19T23:28:15.7016821Z           ]
2026-06-19T23:28:15.7016952Z         }
2026-06-19T23:28:15.7017085Z       }
2026-06-19T23:28:15.7017210Z     },
2026-06-19T23:28:15.7017328Z     {
2026-06-19T23:28:15.7017462Z       "id": "REQ-MSG-5",
2026-06-19T23:28:15.7018368Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-19T23:28:15.7018502Z       "requiredStages": [
2026-06-19T23:28:15.7018621Z         "doc",
2026-06-19T23:28:15.7018746Z         "impl",
2026-06-19T23:28:15.7018868Z         "unit"
2026-06-19T23:28:15.7019056Z       ],
2026-06-19T23:28:15.7019183Z       "stages": {
2026-06-19T23:28:15.7019306Z         "doc": {
2026-06-19T23:28:15.7019430Z           "complete": true,
2026-06-19T23:28:15.7019562Z           "evidence": [
2026-06-19T23:28:15.7019681Z             {
2026-06-19T23:28:15.7019825Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7019962Z               "line": 231
2026-06-19T23:28:15.7020077Z             }
2026-06-19T23:28:15.7020205Z           ]
2026-06-19T23:28:15.7020330Z         },
2026-06-19T23:28:15.7020463Z         "impl": {
2026-06-19T23:28:15.7020586Z           "complete": true,
2026-06-19T23:28:15.7020725Z           "evidence": [
2026-06-19T23:28:15.7020854Z             {
2026-06-19T23:28:15.7021017Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.7021140Z               "line": 60
2026-06-19T23:28:15.7021269Z             },
2026-06-19T23:28:15.7021402Z             {
2026-06-19T23:28:15.7021565Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7021694Z               "line": 126
2026-06-19T23:28:15.7021822Z             },
2026-06-19T23:28:15.7021943Z             {
2026-06-19T23:28:15.7022112Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7022235Z               "line": 135
2026-06-19T23:28:15.7022372Z             },
2026-06-19T23:28:15.7022500Z             {
2026-06-19T23:28:15.7022663Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7022795Z               "line": 149
2026-06-19T23:28:15.7022925Z             },
2026-06-19T23:28:15.7023049Z             {
2026-06-19T23:28:15.7023202Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7023340Z               "line": 178
2026-06-19T23:28:15.7023468Z             },
2026-06-19T23:28:15.7023607Z             {
2026-06-19T23:28:15.7023763Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7023889Z               "line": 2774
2026-06-19T23:28:15.7024021Z             }
2026-06-19T23:28:15.7024141Z           ]
2026-06-19T23:28:15.7024265Z         },
2026-06-19T23:28:15.7024393Z         "int": {
2026-06-19T23:28:15.7024528Z           "complete": true,
2026-06-19T23:28:15.7024669Z           "evidence": [
2026-06-19T23:28:15.7024783Z             {
2026-06-19T23:28:15.7024958Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-19T23:28:15.7025086Z               "line": 19
2026-06-19T23:28:15.7025211Z             }
2026-06-19T23:28:15.7025333Z           ]
2026-06-19T23:28:15.7025463Z         },
2026-06-19T23:28:15.7025597Z         "unit": {
2026-06-19T23:28:15.7025734Z           "complete": true,
2026-06-19T23:28:15.7025868Z           "evidence": [
2026-06-19T23:28:15.7025996Z             {
2026-06-19T23:28:15.7026155Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.7026278Z               "line": 192
2026-06-19T23:28:15.7026517Z             },
2026-06-19T23:28:15.7026645Z             {
2026-06-19T23:28:15.7026822Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-19T23:28:15.7026965Z               "line": 154
2026-06-19T23:28:15.7027090Z             },
2026-06-19T23:28:15.7027217Z             {
2026-06-19T23:28:15.7027376Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7027503Z               "line": 122
2026-06-19T23:28:15.7027631Z             },
2026-06-19T23:28:15.7027756Z             {
2026-06-19T23:28:15.7027927Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7028057Z               "line": 452
2026-06-19T23:28:15.7028289Z             },
2026-06-19T23:28:15.7028418Z             {
2026-06-19T23:28:15.7028580Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7028719Z               "line": 501
2026-06-19T23:28:15.7028837Z             },
2026-06-19T23:28:15.7029020Z             {
2026-06-19T23:28:15.7029176Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7029306Z               "line": 517
2026-06-19T23:28:15.7029433Z             },
2026-06-19T23:28:15.7029558Z             {
2026-06-19T23:28:15.7029720Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7029847Z               "line": 536
2026-06-19T23:28:15.7029981Z             },
2026-06-19T23:28:15.7030103Z             {
2026-06-19T23:28:15.7030260Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7030394Z               "line": 7632
2026-06-19T23:28:15.7030512Z             }
2026-06-19T23:28:15.7030637Z           ]
2026-06-19T23:28:15.7030756Z         }
2026-06-19T23:28:15.7030885Z       }
2026-06-19T23:28:15.7031009Z     },
2026-06-19T23:28:15.7031142Z     {
2026-06-19T23:28:15.7031285Z       "id": "REQ-MSG-6",
2026-06-19T23:28:15.7032960Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-19T23:28:15.7033103Z       "requiredStages": [
2026-06-19T23:28:15.7033228Z         "doc",
2026-06-19T23:28:15.7033360Z         "impl",
2026-06-19T23:28:15.7033485Z         "unit"
2026-06-19T23:28:15.7033609Z       ],
2026-06-19T23:28:15.7033738Z       "stages": {
2026-06-19T23:28:15.7033867Z         "doc": {
2026-06-19T23:28:15.7033999Z           "complete": true,
2026-06-19T23:28:15.7034134Z           "evidence": [
2026-06-19T23:28:15.7034262Z             {
2026-06-19T23:28:15.7034411Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7034544Z               "line": 234
2026-06-19T23:28:15.7034662Z             }
2026-06-19T23:28:15.7034773Z           ]
2026-06-19T23:28:15.7034905Z         },
2026-06-19T23:28:15.7035026Z         "impl": {
2026-06-19T23:28:15.7035168Z           "complete": true,
2026-06-19T23:28:15.7035305Z           "evidence": [
2026-06-19T23:28:15.7035429Z             {
2026-06-19T23:28:15.7035622Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7035757Z               "line": 177
2026-06-19T23:28:15.7035889Z             },
2026-06-19T23:28:15.7035999Z             {
2026-06-19T23:28:15.7036176Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7036314Z               "line": 428
2026-06-19T23:28:15.7036447Z             },
2026-06-19T23:28:15.7036575Z             {
2026-06-19T23:28:15.7036748Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7036886Z               "line": 451
2026-06-19T23:28:15.7037039Z             },
2026-06-19T23:28:15.7037158Z             {
2026-06-19T23:28:15.7037330Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.7037669Z               "line": 89
2026-06-19T23:28:15.7037792Z             },
2026-06-19T23:28:15.7037917Z             {
2026-06-19T23:28:15.7038092Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7038220Z               "line": 155
2026-06-19T23:28:15.7038345Z             }
2026-06-19T23:28:15.7038477Z           ]
2026-06-19T23:28:15.7038602Z         },
2026-06-19T23:28:15.7038726Z         "int": {
2026-06-19T23:28:15.7038854Z           "complete": false,
2026-06-19T23:28:15.7039055Z           "evidence": []
2026-06-19T23:28:15.7039183Z         },
2026-06-19T23:28:15.7039307Z         "unit": {
2026-06-19T23:28:15.7039551Z           "complete": true,
2026-06-19T23:28:15.7039679Z           "evidence": [
2026-06-19T23:28:15.7039808Z             {
2026-06-19T23:28:15.7039984Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7040123Z               "line": 1746
2026-06-19T23:28:15.7040252Z             },
2026-06-19T23:28:15.7040370Z             {
2026-06-19T23:28:15.7040537Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.7040672Z               "line": 219
2026-06-19T23:28:15.7040806Z             }
2026-06-19T23:28:15.7040931Z           ]
2026-06-19T23:28:15.7041049Z         }
2026-06-19T23:28:15.7041183Z       }
2026-06-19T23:28:15.7041302Z     },
2026-06-19T23:28:15.7041416Z     {
2026-06-19T23:28:15.7041555Z       "id": "REQ-MSG-ENVELOPE",
2026-06-19T23:28:15.7045338Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-19T23:28:15.7045528Z       "requiredStages": [
2026-06-19T23:28:15.7045648Z         "doc",
2026-06-19T23:28:15.7045776Z         "impl",
2026-06-19T23:28:15.7045898Z         "unit",
2026-06-19T23:28:15.7046031Z         "int"
2026-06-19T23:28:15.7046163Z       ],
2026-06-19T23:28:15.7046302Z       "stages": {
2026-06-19T23:28:15.7046426Z         "doc": {
2026-06-19T23:28:15.7046574Z           "complete": true,
2026-06-19T23:28:15.7046708Z           "evidence": [
2026-06-19T23:28:15.7046836Z             {
2026-06-19T23:28:15.7047117Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-19T23:28:15.7047256Z               "line": 47
2026-06-19T23:28:15.7047380Z             }
2026-06-19T23:28:15.7047503Z           ]
2026-06-19T23:28:15.7047628Z         },
2026-06-19T23:28:15.7047747Z         "impl": {
2026-06-19T23:28:15.7047890Z           "complete": true,
2026-06-19T23:28:15.7048028Z           "evidence": [
2026-06-19T23:28:15.7048158Z             {
2026-06-19T23:28:15.7048319Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7048453Z               "line": 20
2026-06-19T23:28:15.7048577Z             },
2026-06-19T23:28:15.7048699Z             {
2026-06-19T23:28:15.7048872Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7049206Z               "line": 33
2026-06-19T23:28:15.7049328Z             },
2026-06-19T23:28:15.7049458Z             {
2026-06-19T23:28:15.7049625Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7049758Z               "line": 47
2026-06-19T23:28:15.7049886Z             },
2026-06-19T23:28:15.7050010Z             {
2026-06-19T23:28:15.7050169Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7050301Z               "line": 58
2026-06-19T23:28:15.7050426Z             },
2026-06-19T23:28:15.7050553Z             {
2026-06-19T23:28:15.7050712Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.7050954Z               "line": 14
2026-06-19T23:28:15.7051082Z             },
2026-06-19T23:28:15.7051209Z             {
2026-06-19T23:28:15.7051366Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.7051505Z               "line": 27
2026-06-19T23:28:15.7051628Z             },
2026-06-19T23:28:15.7051753Z             {
2026-06-19T23:28:15.7051909Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.7052044Z               "line": 40
2026-06-19T23:28:15.7052177Z             },
2026-06-19T23:28:15.7052301Z             {
2026-06-19T23:28:15.7052473Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.7052596Z               "line": 92
2026-06-19T23:28:15.7052726Z             },
2026-06-19T23:28:15.7052853Z             {
2026-06-19T23:28:15.7053031Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7053159Z               "line": 143
2026-06-19T23:28:15.7053284Z             },
2026-06-19T23:28:15.7053411Z             {
2026-06-19T23:28:15.7053580Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7053708Z               "line": 216
2026-06-19T23:28:15.7053835Z             },
2026-06-19T23:28:15.7053949Z             {
2026-06-19T23:28:15.7054109Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7054238Z               "line": 529
2026-06-19T23:28:15.7054363Z             },
2026-06-19T23:28:15.7054481Z             {
2026-06-19T23:28:15.7054649Z               "path": "crates/spt/src/api/worker.rs",
2026-06-19T23:28:15.7054767Z               "line": 78
2026-06-19T23:28:15.7054892Z             },
2026-06-19T23:28:15.7055016Z             {
2026-06-19T23:28:15.7055163Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7055301Z               "line": 3083
2026-06-19T23:28:15.7055420Z             }
2026-06-19T23:28:15.7055551Z           ]
2026-06-19T23:28:15.7055668Z         },
2026-06-19T23:28:15.7055797Z         "int": {
2026-06-19T23:28:15.7055941Z           "complete": true,
2026-06-19T23:28:15.7056079Z           "evidence": [
2026-06-19T23:28:15.7056209Z             {
2026-06-19T23:28:15.7056387Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-19T23:28:15.7056521Z               "line": 15
2026-06-19T23:28:15.7056647Z             }
2026-06-19T23:28:15.7056771Z           ]
2026-06-19T23:28:15.7056910Z         },
2026-06-19T23:28:15.7057038Z         "unit": {
2026-06-19T23:28:15.7057177Z           "complete": true,
2026-06-19T23:28:15.7057319Z           "evidence": [
2026-06-19T23:28:15.7057444Z             {
2026-06-19T23:28:15.7057592Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7057725Z               "line": 102
2026-06-19T23:28:15.7057859Z             },
2026-06-19T23:28:15.7057982Z             {
2026-06-19T23:28:15.7058141Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-19T23:28:15.7058274Z               "line": 137
2026-06-19T23:28:15.7058403Z             },
2026-06-19T23:28:15.7058540Z             {
2026-06-19T23:28:15.7058689Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.7058822Z               "line": 98
2026-06-19T23:28:15.7059004Z             },
2026-06-19T23:28:15.7059156Z             {
2026-06-19T23:28:15.7059302Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.7059560Z               "line": 106
2026-06-19T23:28:15.7059684Z             },
2026-06-19T23:28:15.7059808Z             {
2026-06-19T23:28:15.7059974Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.7060090Z               "line": 113
2026-06-19T23:28:15.7060222Z             },
2026-06-19T23:28:15.7060347Z             {
2026-06-19T23:28:15.7060504Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-19T23:28:15.7060633Z               "line": 122
2026-06-19T23:28:15.7060762Z             }
2026-06-19T23:28:15.7060885Z           ]
2026-06-19T23:28:15.7061010Z         }
2026-06-19T23:28:15.7061137Z       }
2026-06-19T23:28:15.7061253Z     },
2026-06-19T23:28:15.7061480Z     {
2026-06-19T23:28:15.7061661Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-19T23:28:15.7066725Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-19T23:28:15.7066985Z       "requiredStages": [
2026-06-19T23:28:15.7067114Z         "doc",
2026-06-19T23:28:15.7067260Z         "impl",
2026-06-19T23:28:15.7067408Z         "unit",
2026-06-19T23:28:15.7067541Z         "int"
2026-06-19T23:28:15.7067661Z       ],
2026-06-19T23:28:15.7067790Z       "stages": {
2026-06-19T23:28:15.7067918Z         "doc": {
2026-06-19T23:28:15.7068057Z           "complete": true,
2026-06-19T23:28:15.7068190Z           "evidence": [
2026-06-19T23:28:15.7068314Z             {
2026-06-19T23:28:15.7068471Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.7068600Z               "line": 173
2026-06-19T23:28:15.7068729Z             }
2026-06-19T23:28:15.7068852Z           ]
2026-06-19T23:28:15.7069034Z         },
2026-06-19T23:28:15.7069167Z         "impl": {
2026-06-19T23:28:15.7069302Z           "complete": true,
2026-06-19T23:28:15.7069424Z           "evidence": [
2026-06-19T23:28:15.7069544Z             {
2026-06-19T23:28:15.7069725Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.7069852Z               "line": 817
2026-06-19T23:28:15.7069977Z             },
2026-06-19T23:28:15.7070101Z             {
2026-06-19T23:28:15.7070278Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7070411Z               "line": 23
2026-06-19T23:28:15.7070530Z             },
2026-06-19T23:28:15.7070659Z             {
2026-06-19T23:28:15.7070835Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7070964Z               "line": 91
2026-06-19T23:28:15.7071203Z             },
2026-06-19T23:28:15.7071317Z             {
2026-06-19T23:28:15.7071498Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7071623Z               "line": 239
2026-06-19T23:28:15.7071741Z             },
2026-06-19T23:28:15.7071885Z             {
2026-06-19T23:28:15.7072055Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7072188Z               "line": 287
2026-06-19T23:28:15.7072311Z             },
2026-06-19T23:28:15.7072443Z             {
2026-06-19T23:28:15.7072612Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7072748Z               "line": 311
2026-06-19T23:28:15.7072973Z             },
2026-06-19T23:28:15.7073101Z             {
2026-06-19T23:28:15.7073274Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7073406Z               "line": 60
2026-06-19T23:28:15.7073536Z             },
2026-06-19T23:28:15.7073664Z             {
2026-06-19T23:28:15.7073846Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7073974Z               "line": 878
2026-06-19T23:28:15.7074099Z             }
2026-06-19T23:28:15.7074226Z           ]
2026-06-19T23:28:15.7074351Z         },
2026-06-19T23:28:15.7074490Z         "int": {
2026-06-19T23:28:15.7074627Z           "complete": true,
2026-06-19T23:28:15.7074762Z           "evidence": [
2026-06-19T23:28:15.7074898Z             {
2026-06-19T23:28:15.7075093Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.7075229Z               "line": 1034
2026-06-19T23:28:15.7075359Z             },
2026-06-19T23:28:15.7075488Z             {
2026-06-19T23:28:15.7075683Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.7075822Z               "line": 1139
2026-06-19T23:28:15.7075949Z             },
2026-06-19T23:28:15.7076074Z             {
2026-06-19T23:28:15.7076274Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.7076412Z               "line": 1207
2026-06-19T23:28:15.7076550Z             },
2026-06-19T23:28:15.7076675Z             {
2026-06-19T23:28:15.7076879Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-19T23:28:15.7077019Z               "line": 1300
2026-06-19T23:28:15.7077141Z             }
2026-06-19T23:28:15.7077262Z           ]
2026-06-19T23:28:15.7077381Z         },
2026-06-19T23:28:15.7077508Z         "unit": {
2026-06-19T23:28:15.7077641Z           "complete": true,
2026-06-19T23:28:15.7077772Z           "evidence": [
2026-06-19T23:28:15.7081405Z             {
2026-06-19T23:28:15.7081643Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-19T23:28:15.7081797Z               "line": 243
2026-06-19T23:28:15.7081924Z             },
2026-06-19T23:28:15.7082049Z             {
2026-06-19T23:28:15.7082239Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7082378Z               "line": 350
2026-06-19T23:28:15.7082507Z             },
2026-06-19T23:28:15.7082629Z             {
2026-06-19T23:28:15.7082815Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7082941Z               "line": 381
2026-06-19T23:28:15.7083066Z             },
2026-06-19T23:28:15.7083190Z             {
2026-06-19T23:28:15.7083371Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7083505Z               "line": 411
2026-06-19T23:28:15.7083632Z             },
2026-06-19T23:28:15.7083748Z             {
2026-06-19T23:28:15.7083923Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-19T23:28:15.7084063Z               "line": 440
2026-06-19T23:28:15.7084191Z             },
2026-06-19T23:28:15.7084310Z             {
2026-06-19T23:28:15.7084482Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7084606Z               "line": 1170
2026-06-19T23:28:15.7084735Z             }
2026-06-19T23:28:15.7084859Z           ]
2026-06-19T23:28:15.7085120Z         }
2026-06-19T23:28:15.7085250Z       }
2026-06-19T23:28:15.7085370Z     },
2026-06-19T23:28:15.7085496Z     {
2026-06-19T23:28:15.7085630Z       "id": "REQ-NET-1",
2026-06-19T23:28:15.7085866Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-19T23:28:15.7085996Z       "requiredStages": [
2026-06-19T23:28:15.7086118Z         "impl",
2026-06-19T23:28:15.7086253Z         "unit",
2026-06-19T23:28:15.7086382Z         "int"
2026-06-19T23:28:15.7086509Z       ],
2026-06-19T23:28:15.7086639Z       "stages": {
2026-06-19T23:28:15.7086771Z         "doc": {
2026-06-19T23:28:15.7086911Z           "complete": false,
2026-06-19T23:28:15.7087154Z           "evidence": []
2026-06-19T23:28:15.7087283Z         },
2026-06-19T23:28:15.7087401Z         "impl": {
2026-06-19T23:28:15.7087545Z           "complete": true,
2026-06-19T23:28:15.7087668Z           "evidence": [
2026-06-19T23:28:15.7087793Z             {
2026-06-19T23:28:15.7087964Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7088115Z               "line": 54
2026-06-19T23:28:15.7088249Z             },
2026-06-19T23:28:15.7088375Z             {
2026-06-19T23:28:15.7088552Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7088685Z               "line": 594
2026-06-19T23:28:15.7088814Z             },
2026-06-19T23:28:15.7088934Z             {
2026-06-19T23:28:15.7089178Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-19T23:28:15.7089305Z               "line": 130
2026-06-19T23:28:15.7089430Z             },
2026-06-19T23:28:15.7089562Z             {
2026-06-19T23:28:15.7089739Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7089877Z               "line": 97
2026-06-19T23:28:15.7090001Z             },
2026-06-19T23:28:15.7090131Z             {
2026-06-19T23:28:15.7090306Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7090437Z               "line": 159
2026-06-19T23:28:15.7090568Z             },
2026-06-19T23:28:15.7090694Z             {
2026-06-19T23:28:15.7090873Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7091006Z               "line": 175
2026-06-19T23:28:15.7091126Z             },
2026-06-19T23:28:15.7091254Z             {
2026-06-19T23:28:15.7091417Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7091545Z               "line": 190
2026-06-19T23:28:15.7091670Z             },
2026-06-19T23:28:15.7091794Z             {
2026-06-19T23:28:15.7091955Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7092089Z               "line": 271
2026-06-19T23:28:15.7092222Z             },
2026-06-19T23:28:15.7092338Z             {
2026-06-19T23:28:15.7092513Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7092643Z               "line": 306
2026-06-19T23:28:15.7092766Z             },
2026-06-19T23:28:15.7092890Z             {
2026-06-19T23:28:15.7093062Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7093199Z               "line": 312
2026-06-19T23:28:15.7093323Z             },
2026-06-19T23:28:15.7093449Z             {
2026-06-19T23:28:15.7093616Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7093754Z               "line": 318
2026-06-19T23:28:15.7093883Z             },
2026-06-19T23:28:15.7093998Z             {
2026-06-19T23:28:15.7094168Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7094299Z               "line": 334
2026-06-19T23:28:15.7094417Z             },
2026-06-19T23:28:15.7094541Z             {
2026-06-19T23:28:15.7094708Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7094832Z               "line": 354
2026-06-19T23:28:15.7094957Z             },
2026-06-19T23:28:15.7095085Z             {
2026-06-19T23:28:15.7095252Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-19T23:28:15.7095380Z               "line": 35
2026-06-19T23:28:15.7095605Z             },
2026-06-19T23:28:15.7095734Z             {
2026-06-19T23:28:15.7095906Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-19T23:28:15.7096037Z               "line": 85
2026-06-19T23:28:15.7096166Z             },
2026-06-19T23:28:15.7096279Z             {
2026-06-19T23:28:15.7096454Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.7096584Z               "line": 138
2026-06-19T23:28:15.7096716Z             },
2026-06-19T23:28:15.7096842Z             {
2026-06-19T23:28:15.7096998Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7097137Z               "line": 2925
2026-06-19T23:28:15.7097374Z             },
2026-06-19T23:28:15.7097504Z             {
2026-06-19T23:28:15.7097665Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7097800Z               "line": 17
2026-06-19T23:28:15.7097918Z             }
2026-06-19T23:28:15.7098038Z           ]
2026-06-19T23:28:15.7098168Z         },
2026-06-19T23:28:15.7098295Z         "int": {
2026-06-19T23:28:15.7098430Z           "complete": true,
2026-06-19T23:28:15.7098562Z           "evidence": [
2026-06-19T23:28:15.7098689Z             {
2026-06-19T23:28:15.7098874Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7099069Z               "line": 341
2026-06-19T23:28:15.7099189Z             },
2026-06-19T23:28:15.7099312Z             {
2026-06-19T23:28:15.7099494Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7099622Z               "line": 675
2026-06-19T23:28:15.7099747Z             },
2026-06-19T23:28:15.7099875Z             {
2026-06-19T23:28:15.7100043Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7100176Z               "line": 973
2026-06-19T23:28:15.7100304Z             }
2026-06-19T23:28:15.7100437Z           ]
2026-06-19T23:28:15.7100561Z         },
2026-06-19T23:28:15.7100691Z         "unit": {
2026-06-19T23:28:15.7100833Z           "complete": true,
2026-06-19T23:28:15.7100963Z           "evidence": [
2026-06-19T23:28:15.7101086Z             {
2026-06-19T23:28:15.7101259Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7101387Z               "line": 651
2026-06-19T23:28:15.7101510Z             },
2026-06-19T23:28:15.7101638Z             {
2026-06-19T23:28:15.7101814Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7101943Z               "line": 686
2026-06-19T23:28:15.7102077Z             },
2026-06-19T23:28:15.7102200Z             {
2026-06-19T23:28:15.7102378Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7102515Z               "line": 940
2026-06-19T23:28:15.7102649Z             },
2026-06-19T23:28:15.7102777Z             {
2026-06-19T23:28:15.7102941Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-19T23:28:15.7103073Z               "line": 201
2026-06-19T23:28:15.7103189Z             },
2026-06-19T23:28:15.7103312Z             {
2026-06-19T23:28:15.7103488Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7103617Z               "line": 442
2026-06-19T23:28:15.7103745Z             },
2026-06-19T23:28:15.7103869Z             {
2026-06-19T23:28:15.7104043Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7104167Z               "line": 456
2026-06-19T23:28:15.7104296Z             },
2026-06-19T23:28:15.7104423Z             {
2026-06-19T23:28:15.7104592Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7104724Z               "line": 475
2026-06-19T23:28:15.7104845Z             },
2026-06-19T23:28:15.7104972Z             {
2026-06-19T23:28:15.7105145Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-19T23:28:15.7105268Z               "line": 120
2026-06-19T23:28:15.7105392Z             },
2026-06-19T23:28:15.7105517Z             {
2026-06-19T23:28:15.7105683Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-19T23:28:15.7105907Z               "line": 163
2026-06-19T23:28:15.7106036Z             },
2026-06-19T23:28:15.7106156Z             {
2026-06-19T23:28:15.7106331Z               "path": "crates/spt-store/src/spool.rs",
2026-06-19T23:28:15.7106471Z               "line": 530
2026-06-19T23:28:15.7106593Z             },
2026-06-19T23:28:15.7106721Z             {
2026-06-19T23:28:15.7106877Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7107005Z               "line": 616
2026-06-19T23:28:15.7107125Z             },
2026-06-19T23:28:15.7107248Z             {
2026-06-19T23:28:15.7107406Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7107644Z               "line": 1006
2026-06-19T23:28:15.7107773Z             }
2026-06-19T23:28:15.7107887Z           ]
2026-06-19T23:28:15.7108017Z         }
2026-06-19T23:28:15.7108140Z       }
2026-06-19T23:28:15.7108264Z     },
2026-06-19T23:28:15.7108389Z     {
2026-06-19T23:28:15.7108522Z       "id": "REQ-NET-2",
2026-06-19T23:28:15.7108765Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-19T23:28:15.7108898Z       "requiredStages": [
2026-06-19T23:28:15.7109094Z         "impl"
2026-06-19T23:28:15.7109221Z       ],
2026-06-19T23:28:15.7109345Z       "stages": {
2026-06-19T23:28:15.7109476Z         "doc": {
2026-06-19T23:28:15.7109615Z           "complete": false,
2026-06-19T23:28:15.7109749Z           "evidence": []
2026-06-19T23:28:15.7109872Z         },
2026-06-19T23:28:15.7110002Z         "impl": {
2026-06-19T23:28:15.7110134Z           "complete": true,
2026-06-19T23:28:15.7110259Z           "evidence": [
2026-06-19T23:28:15.7110388Z             {
2026-06-19T23:28:15.7110560Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.7110692Z               "line": 57
2026-06-19T23:28:15.7110816Z             },
2026-06-19T23:28:15.7110946Z             {
2026-06-19T23:28:15.7111116Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7111256Z               "line": 71
2026-06-19T23:28:15.7111384Z             },
2026-06-19T23:28:15.7111509Z             {
2026-06-19T23:28:15.7111683Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7111809Z               "line": 81
2026-06-19T23:28:15.7111938Z             },
2026-06-19T23:28:15.7112065Z             {
2026-06-19T23:28:15.7112242Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7112379Z               "line": 159
2026-06-19T23:28:15.7112494Z             },
2026-06-19T23:28:15.7112628Z             {
2026-06-19T23:28:15.7112800Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7112933Z               "line": 175
2026-06-19T23:28:15.7113061Z             },
2026-06-19T23:28:15.7113191Z             {
2026-06-19T23:28:15.7113366Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-19T23:28:15.7113492Z               "line": 190
2026-06-19T23:28:15.7113619Z             }
2026-06-19T23:28:15.7113749Z           ]
2026-06-19T23:28:15.7113886Z         },
2026-06-19T23:28:15.7114015Z         "int": {
2026-06-19T23:28:15.7114150Z           "complete": false,
2026-06-19T23:28:15.7114281Z           "evidence": []
2026-06-19T23:28:15.7114405Z         },
2026-06-19T23:28:15.7114527Z         "unit": {
2026-06-19T23:28:15.7114664Z           "complete": true,
2026-06-19T23:28:15.7114794Z           "evidence": [
2026-06-19T23:28:15.7114922Z             {
2026-06-19T23:28:15.7115090Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.7115223Z               "line": 402
2026-06-19T23:28:15.7115347Z             }
2026-06-19T23:28:15.7115476Z           ]
2026-06-19T23:28:15.7115604Z         }
2026-06-19T23:28:15.7115734Z       }
2026-06-19T23:28:15.7115866Z     },
2026-06-19T23:28:15.7115996Z     {
2026-06-19T23:28:15.7116133Z       "id": "REQ-NET-3",
2026-06-19T23:28:15.7116364Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-19T23:28:15.7116500Z       "requiredStages": [
2026-06-19T23:28:15.7116735Z         "impl",
2026-06-19T23:28:15.7116868Z         "unit"
2026-06-19T23:28:15.7116993Z       ],
2026-06-19T23:28:15.7117125Z       "stages": {
2026-06-19T23:28:15.7117248Z         "doc": {
2026-06-19T23:28:15.7117376Z           "complete": false,
2026-06-19T23:28:15.7117508Z           "evidence": []
2026-06-19T23:28:15.7117628Z         },
2026-06-19T23:28:15.7117756Z         "impl": {
2026-06-19T23:28:15.7117885Z           "complete": true,
2026-06-19T23:28:15.7118010Z           "evidence": [
2026-06-19T23:28:15.7118137Z             {
2026-06-19T23:28:15.7118295Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.7118428Z               "line": 39
2026-06-19T23:28:15.7118644Z             },
2026-06-19T23:28:15.7118767Z             {
2026-06-19T23:28:15.7118930Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.7119124Z               "line": 182
2026-06-19T23:28:15.7119249Z             },
2026-06-19T23:28:15.7119377Z             {
2026-06-19T23:28:15.7119546Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-19T23:28:15.7119663Z               "line": 333
2026-06-19T23:28:15.7119791Z             },
2026-06-19T23:28:15.7119915Z             {
2026-06-19T23:28:15.7120084Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-19T23:28:15.7120203Z               "line": 36
2026-06-19T23:28:15.7120328Z             },
2026-06-19T23:28:15.7120451Z             {
2026-06-19T23:28:15.7120629Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7120761Z               "line": 158
2026-06-19T23:28:15.7120891Z             },
2026-06-19T23:28:15.7121009Z             {
2026-06-19T23:28:15.7121187Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7121315Z               "line": 238
2026-06-19T23:28:15.7121434Z             },
2026-06-19T23:28:15.7121554Z             {
2026-06-19T23:28:15.7121730Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7121863Z               "line": 259
2026-06-19T23:28:15.7121987Z             },
2026-06-19T23:28:15.7122112Z             {
2026-06-19T23:28:15.7122283Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7122417Z               "line": 317
2026-06-19T23:28:15.7122540Z             },
2026-06-19T23:28:15.7122668Z             {
2026-06-19T23:28:15.7122836Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7122963Z               "line": 336
2026-06-19T23:28:15.7123088Z             },
2026-06-19T23:28:15.7123212Z             {
2026-06-19T23:28:15.7123389Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7123517Z               "line": 374
2026-06-19T23:28:15.7123645Z             },
2026-06-19T23:28:15.7123775Z             {
2026-06-19T23:28:15.7123946Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7124075Z               "line": 419
2026-06-19T23:28:15.7124203Z             },
2026-06-19T23:28:15.7124333Z             {
2026-06-19T23:28:15.7124503Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7124633Z               "line": 432
2026-06-19T23:28:15.7124752Z             },
2026-06-19T23:28:15.7124879Z             {
2026-06-19T23:28:15.7125051Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.7125182Z               "line": 29
2026-06-19T23:28:15.7125301Z             },
2026-06-19T23:28:15.7125430Z             {
2026-06-19T23:28:15.7125597Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.7125736Z               "line": 72
2026-06-19T23:28:15.7125859Z             },
2026-06-19T23:28:15.7125993Z             {
2026-06-19T23:28:15.7126159Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.7126299Z               "line": 123
2026-06-19T23:28:15.7126426Z             }
2026-06-19T23:28:15.7126556Z           ]
2026-06-19T23:28:15.7126679Z         },
2026-06-19T23:28:15.7126798Z         "int": {
2026-06-19T23:28:15.7127032Z           "complete": false,
2026-06-19T23:28:15.7127161Z           "evidence": []
2026-06-19T23:28:15.7127295Z         },
2026-06-19T23:28:15.7127423Z         "unit": {
2026-06-19T23:28:15.7127568Z           "complete": true,
2026-06-19T23:28:15.7127699Z           "evidence": [
2026-06-19T23:28:15.7127818Z             {
2026-06-19T23:28:15.7127987Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-19T23:28:15.7128120Z               "line": 223
2026-06-19T23:28:15.7128250Z             },
2026-06-19T23:28:15.7128378Z             {
2026-06-19T23:28:15.7128555Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-19T23:28:15.7128788Z               "line": 351
2026-06-19T23:28:15.7128913Z             },
2026-06-19T23:28:15.7129113Z             {
2026-06-19T23:28:15.7129275Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-19T23:28:15.7129408Z               "line": 504
2026-06-19T23:28:15.7129533Z             },
2026-06-19T23:28:15.7129651Z             {
2026-06-19T23:28:15.7129810Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-19T23:28:15.7129932Z               "line": 93
2026-06-19T23:28:15.7130053Z             },
2026-06-19T23:28:15.7130177Z             {
2026-06-19T23:28:15.7130346Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-19T23:28:15.7130484Z               "line": 142
2026-06-19T23:28:15.7130602Z             },
2026-06-19T23:28:15.7130730Z             {
2026-06-19T23:28:15.7130897Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.7131026Z               "line": 315
2026-06-19T23:28:15.7131155Z             },
2026-06-19T23:28:15.7131287Z             {
2026-06-19T23:28:15.7131460Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.7131593Z               "line": 355
2026-06-19T23:28:15.7131718Z             },
2026-06-19T23:28:15.7131846Z             {
2026-06-19T23:28:15.7132014Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-19T23:28:15.7132151Z               "line": 494
2026-06-19T23:28:15.7132280Z             }
2026-06-19T23:28:15.7132409Z           ]
2026-06-19T23:28:15.7132519Z         }
2026-06-19T23:28:15.7132644Z       }
2026-06-19T23:28:15.7132757Z     },
2026-06-19T23:28:15.7132885Z     {
2026-06-19T23:28:15.7133030Z       "id": "REQ-NODE-IDENTITY",
2026-06-19T23:28:15.7133314Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-19T23:28:15.7133457Z       "requiredStages": [
2026-06-19T23:28:15.7133585Z         "impl",
2026-06-19T23:28:15.7133714Z         "unit"
2026-06-19T23:28:15.7133847Z       ],
2026-06-19T23:28:15.7133982Z       "stages": {
2026-06-19T23:28:15.7134110Z         "doc": {
2026-06-19T23:28:15.7134254Z           "complete": false,
2026-06-19T23:28:15.7134377Z           "evidence": []
2026-06-19T23:28:15.7134506Z         },
2026-06-19T23:28:15.7134635Z         "impl": {
2026-06-19T23:28:15.7134773Z           "complete": true,
2026-06-19T23:28:15.7134907Z           "evidence": [
2026-06-19T23:28:15.7135034Z             {
2026-06-19T23:28:15.7135208Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7135349Z               "line": 60
2026-06-19T23:28:15.7135472Z             },
2026-06-19T23:28:15.7135597Z             {
2026-06-19T23:28:15.7135766Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7135905Z               "line": 68
2026-06-19T23:28:15.7136028Z             },
2026-06-19T23:28:15.7136162Z             {
2026-06-19T23:28:15.7136334Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7136457Z               "line": 86
2026-06-19T23:28:15.7136591Z             },
2026-06-19T23:28:15.7136714Z             {
2026-06-19T23:28:15.7136892Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7137019Z               "line": 120
2026-06-19T23:28:15.7137154Z             },
2026-06-19T23:28:15.7137283Z             {
2026-06-19T23:28:15.7137450Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7137697Z               "line": 127
2026-06-19T23:28:15.7137818Z             },
2026-06-19T23:28:15.7137945Z             {
2026-06-19T23:28:15.7138109Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7138245Z               "line": 143
2026-06-19T23:28:15.7138373Z             },
2026-06-19T23:28:15.7138497Z             {
2026-06-19T23:28:15.7138670Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-19T23:28:15.7138801Z               "line": 16
2026-06-19T23:28:15.7138924Z             }
2026-06-19T23:28:15.7139130Z           ]
2026-06-19T23:28:15.7139243Z         },
2026-06-19T23:28:15.7139468Z         "int": {
2026-06-19T23:28:15.7139606Z           "complete": false,
2026-06-19T23:28:15.7139749Z           "evidence": []
2026-06-19T23:28:15.7139873Z         },
2026-06-19T23:28:15.7140002Z         "unit": {
2026-06-19T23:28:15.7140125Z           "complete": true,
2026-06-19T23:28:15.7140268Z           "evidence": [
2026-06-19T23:28:15.7140426Z             {
2026-06-19T23:28:15.7140593Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7140732Z               "line": 199
2026-06-19T23:28:15.7140845Z             },
2026-06-19T23:28:15.7140973Z             {
2026-06-19T23:28:15.7141143Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7141276Z               "line": 218
2026-06-19T23:28:15.7141406Z             },
2026-06-19T23:28:15.7141528Z             {
2026-06-19T23:28:15.7141701Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7141829Z               "line": 234
2026-06-19T23:28:15.7141959Z             },
2026-06-19T23:28:15.7142082Z             {
2026-06-19T23:28:15.7142245Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-19T23:28:15.7142378Z               "line": 256
2026-06-19T23:28:15.7142501Z             },
2026-06-19T23:28:15.7142626Z             {
2026-06-19T23:28:15.7142788Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-19T23:28:15.7142913Z               "line": 124
2026-06-19T23:28:15.7143035Z             },
2026-06-19T23:28:15.7143145Z             {
2026-06-19T23:28:15.7143322Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-19T23:28:15.7143450Z               "line": 140
2026-06-19T23:28:15.7143571Z             },
2026-06-19T23:28:15.7143693Z             {
2026-06-19T23:28:15.7143860Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-19T23:28:15.7143994Z               "line": 155
2026-06-19T23:28:15.7144117Z             }
2026-06-19T23:28:15.7144242Z           ]
2026-06-19T23:28:15.7144365Z         }
2026-06-19T23:28:15.7144485Z       }
2026-06-19T23:28:15.7144613Z     },
2026-06-19T23:28:15.7144741Z     {
2026-06-19T23:28:15.7144876Z       "id": "REQ-NOTIF-1",
2026-06-19T23:28:15.7145295Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-19T23:28:15.7145439Z       "requiredStages": [
2026-06-19T23:28:15.7145567Z         "impl",
2026-06-19T23:28:15.7145695Z         "unit",
2026-06-19T23:28:15.7145816Z         "int"
2026-06-19T23:28:15.7145942Z       ],
2026-06-19T23:28:15.7146076Z       "stages": {
2026-06-19T23:28:15.7146204Z         "doc": {
2026-06-19T23:28:15.7146350Z           "complete": false,
2026-06-19T23:28:15.7146484Z           "evidence": []
2026-06-19T23:28:15.7146616Z         },
2026-06-19T23:28:15.7146741Z         "impl": {
2026-06-19T23:28:15.7146889Z           "complete": true,
2026-06-19T23:28:15.7147027Z           "evidence": [
2026-06-19T23:28:15.7147151Z             {
2026-06-19T23:28:15.7147327Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7147457Z               "line": 514
2026-06-19T23:28:15.7147579Z             },
2026-06-19T23:28:15.7147705Z             {
2026-06-19T23:28:15.7147876Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7148006Z               "line": 30
2026-06-19T23:28:15.7148233Z             },
2026-06-19T23:28:15.7148364Z             {
2026-06-19T23:28:15.7148524Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7148654Z               "line": 69
2026-06-19T23:28:15.7148777Z             },
2026-06-19T23:28:15.7148904Z             {
2026-06-19T23:28:15.7149117Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7149245Z               "line": 93
2026-06-19T23:28:15.7149375Z             },
2026-06-19T23:28:15.7149503Z             {
2026-06-19T23:28:15.7149671Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7149793Z               "line": 107
2026-06-19T23:28:15.7150023Z             },
2026-06-19T23:28:15.7150151Z             {
2026-06-19T23:28:15.7150319Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7150452Z               "line": 142
2026-06-19T23:28:15.7150582Z             },
2026-06-19T23:28:15.7150709Z             {
2026-06-19T23:28:15.7150868Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7151000Z               "line": 187
2026-06-19T23:28:15.7151129Z             },
2026-06-19T23:28:15.7151255Z             {
2026-06-19T23:28:15.7151419Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7151548Z               "line": 258
2026-06-19T23:28:15.7151679Z             },
2026-06-19T23:28:15.7151807Z             {
2026-06-19T23:28:15.7151957Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7152093Z               "line": 372
2026-06-19T23:28:15.7152214Z             },
2026-06-19T23:28:15.7152337Z             {
2026-06-19T23:28:15.7152490Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7152628Z               "line": 479
2026-06-19T23:28:15.7152761Z             },
2026-06-19T23:28:15.7152885Z             {
2026-06-19T23:28:15.7153061Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7153191Z               "line": 24
2026-06-19T23:28:15.7153319Z             },
2026-06-19T23:28:15.7153439Z             {
2026-06-19T23:28:15.7153619Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7153754Z               "line": 34
2026-06-19T23:28:15.7153882Z             },
2026-06-19T23:28:15.7154006Z             {
2026-06-19T23:28:15.7154173Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7154310Z               "line": 60
2026-06-19T23:28:15.7154439Z             },
2026-06-19T23:28:15.7154568Z             {
2026-06-19T23:28:15.7154740Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7154864Z               "line": 82
2026-06-19T23:28:15.7154996Z             },
2026-06-19T23:28:15.7155121Z             {
2026-06-19T23:28:15.7155287Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7155417Z               "line": 94
2026-06-19T23:28:15.7155541Z             },
2026-06-19T23:28:15.7155669Z             {
2026-06-19T23:28:15.7155840Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.7155979Z               "line": 96
2026-06-19T23:28:15.7156108Z             },
2026-06-19T23:28:15.7156241Z             {
2026-06-19T23:28:15.7156418Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-19T23:28:15.7156560Z               "line": 44
2026-06-19T23:28:15.7156688Z             },
2026-06-19T23:28:15.7156810Z             {
2026-06-19T23:28:15.7156996Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-19T23:28:15.7157130Z               "line": 20
2026-06-19T23:28:15.7157263Z             },
2026-06-19T23:28:15.7157387Z             {
2026-06-19T23:28:15.7157563Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-19T23:28:15.7157702Z               "line": 30
2026-06-19T23:28:15.7157830Z             },
2026-06-19T23:28:15.7157960Z             {
2026-06-19T23:28:15.7158126Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-19T23:28:15.7158265Z               "line": 50
2026-06-19T23:28:15.7158493Z             },
2026-06-19T23:28:15.7158623Z             {
2026-06-19T23:28:15.7158798Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7158928Z               "line": 28
2026-06-19T23:28:15.7159147Z             },
2026-06-19T23:28:15.7159277Z             {
2026-06-19T23:28:15.7159441Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7159579Z               "line": 126
2026-06-19T23:28:15.7159701Z             },
2026-06-19T23:28:15.7159815Z             {
2026-06-19T23:28:15.7159974Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7160106Z               "line": 161
2026-06-19T23:28:15.7160321Z             },
2026-06-19T23:28:15.7160449Z             {
2026-06-19T23:28:15.7160612Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7160740Z               "line": 202
2026-06-19T23:28:15.7160865Z             },
2026-06-19T23:28:15.7160975Z             {
2026-06-19T23:28:15.7161142Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7161269Z               "line": 213
2026-06-19T23:28:15.7161394Z             },
2026-06-19T23:28:15.7161523Z             {
2026-06-19T23:28:15.7161689Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7161820Z               "line": 238
2026-06-19T23:28:15.7161941Z             },
2026-06-19T23:28:15.7162065Z             {
2026-06-19T23:28:15.7162220Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7162353Z               "line": 261
2026-06-19T23:28:15.7162483Z             },
2026-06-19T23:28:15.7162601Z             {
2026-06-19T23:28:15.7162774Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7162902Z               "line": 82
2026-06-19T23:28:15.7163036Z             }
2026-06-19T23:28:15.7163155Z           ]
2026-06-19T23:28:15.7163288Z         },
2026-06-19T23:28:15.7163413Z         "int": {
2026-06-19T23:28:15.7163550Z           "complete": true,
2026-06-19T23:28:15.7163684Z           "evidence": [
2026-06-19T23:28:15.7163798Z             {
2026-06-19T23:28:15.7163980Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7164113Z               "line": 285
2026-06-19T23:28:15.7164242Z             },
2026-06-19T23:28:15.7164377Z             {
2026-06-19T23:28:15.7164542Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-19T23:28:15.7164677Z               "line": 145
2026-06-19T23:28:15.7164799Z             },
2026-06-19T23:28:15.7164927Z             {
2026-06-19T23:28:15.7165104Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7165237Z               "line": 684
2026-06-19T23:28:15.7165367Z             },
2026-06-19T23:28:15.7165490Z             {
2026-06-19T23:28:15.7165662Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7165800Z               "line": 1102
2026-06-19T23:28:15.7165934Z             }
2026-06-19T23:28:15.7166048Z           ]
2026-06-19T23:28:15.7166176Z         },
2026-06-19T23:28:15.7166306Z         "unit": {
2026-06-19T23:28:15.7166439Z           "complete": true,
2026-06-19T23:28:15.7166569Z           "evidence": [
2026-06-19T23:28:15.7166696Z             {
2026-06-19T23:28:15.7166864Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7166997Z               "line": 572
2026-06-19T23:28:15.7167124Z             },
2026-06-19T23:28:15.7167253Z             {
2026-06-19T23:28:15.7167417Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7167547Z               "line": 636
2026-06-19T23:28:15.7167667Z             },
2026-06-19T23:28:15.7167799Z             {
2026-06-19T23:28:15.7167966Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7168099Z               "line": 740
2026-06-19T23:28:15.7168229Z             },
2026-06-19T23:28:15.7168352Z             {
2026-06-19T23:28:15.7168520Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7168653Z               "line": 772
2026-06-19T23:28:15.7168882Z             },
2026-06-19T23:28:15.7169082Z             {
2026-06-19T23:28:15.7169244Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7169382Z               "line": 840
2026-06-19T23:28:15.7169507Z             },
2026-06-19T23:28:15.7169635Z             {
2026-06-19T23:28:15.7169798Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7169935Z               "line": 898
2026-06-19T23:28:15.7170058Z             },
2026-06-19T23:28:15.7170177Z             {
2026-06-19T23:28:15.7170342Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7170467Z               "line": 1173
2026-06-19T23:28:15.7170699Z             },
2026-06-19T23:28:15.7170824Z             {
2026-06-19T23:28:15.7171005Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7171130Z               "line": 157
2026-06-19T23:28:15.7171252Z             },
2026-06-19T23:28:15.7171382Z             {
2026-06-19T23:28:15.7171558Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7171692Z               "line": 250
2026-06-19T23:28:15.7171815Z             },
2026-06-19T23:28:15.7171944Z             {
2026-06-19T23:28:15.7172112Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-19T23:28:15.7172245Z               "line": 273
2026-06-19T23:28:15.7172370Z             },
2026-06-19T23:28:15.7172487Z             {
2026-06-19T23:28:15.7172654Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.7172790Z               "line": 355
2026-06-19T23:28:15.7172918Z             },
2026-06-19T23:28:15.7173043Z             {
2026-06-19T23:28:15.7173214Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-19T23:28:15.7176494Z               "line": 392
2026-06-19T23:28:15.7176661Z             },
2026-06-19T23:28:15.7176794Z             {
2026-06-19T23:28:15.7176990Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-19T23:28:15.7177139Z               "line": 131
2026-06-19T23:28:15.7177270Z             },
2026-06-19T23:28:15.7177395Z             {
2026-06-19T23:28:15.7177566Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-19T23:28:15.7177694Z               "line": 72
2026-06-19T23:28:15.7177813Z             },
2026-06-19T23:28:15.7177935Z             {
2026-06-19T23:28:15.7178107Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-19T23:28:15.7178235Z               "line": 97
2026-06-19T23:28:15.7178364Z             },
2026-06-19T23:28:15.7178499Z             {
2026-06-19T23:28:15.7178664Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7178794Z               "line": 379
2026-06-19T23:28:15.7178922Z             },
2026-06-19T23:28:15.7179113Z             {
2026-06-19T23:28:15.7179284Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7179414Z               "line": 417
2026-06-19T23:28:15.7179542Z             },
2026-06-19T23:28:15.7179666Z             {
2026-06-19T23:28:15.7179837Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7179962Z               "line": 433
2026-06-19T23:28:15.7180091Z             },
2026-06-19T23:28:15.7180215Z             {
2026-06-19T23:28:15.7180368Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7180504Z               "line": 472
2026-06-19T23:28:15.7180623Z             },
2026-06-19T23:28:15.7180737Z             {
2026-06-19T23:28:15.7180902Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7181032Z               "line": 489
2026-06-19T23:28:15.7181164Z             },
2026-06-19T23:28:15.7181289Z             {
2026-06-19T23:28:15.7181460Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7181589Z               "line": 517
2026-06-19T23:28:15.7181723Z             },
2026-06-19T23:28:15.7181846Z             {
2026-06-19T23:28:15.7182000Z               "path": "crates/spt-store/src/notif.rs",
2026-06-19T23:28:15.7182123Z               "line": 548
2026-06-19T23:28:15.7182403Z             },
2026-06-19T23:28:15.7182533Z             {
2026-06-19T23:28:15.7182709Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7182843Z               "line": 741
2026-06-19T23:28:15.7182968Z             }
2026-06-19T23:28:15.7183095Z           ]
2026-06-19T23:28:15.7183214Z         }
2026-06-19T23:28:15.7183454Z       }
2026-06-19T23:28:15.7183574Z     },
2026-06-19T23:28:15.7183693Z     {
2026-06-19T23:28:15.7183836Z       "id": "REQ-NOTIF-2",
2026-06-19T23:28:15.7184166Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-19T23:28:15.7184417Z       "requiredStages": [
2026-06-19T23:28:15.7184543Z         "doc",
2026-06-19T23:28:15.7184666Z         "impl",
2026-06-19T23:28:15.7184790Z         "unit",
2026-06-19T23:28:15.7184914Z         "int"
2026-06-19T23:28:15.7185042Z       ],
2026-06-19T23:28:15.7185172Z       "stages": {
2026-06-19T23:28:15.7185295Z         "doc": {
2026-06-19T23:28:15.7185440Z           "complete": true,
2026-06-19T23:28:15.7185562Z           "evidence": [
2026-06-19T23:28:15.7185691Z             {
2026-06-19T23:28:15.7185836Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7185967Z               "line": 509
2026-06-19T23:28:15.7186095Z             },
2026-06-19T23:28:15.7186215Z             {
2026-06-19T23:28:15.7186371Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.7186496Z               "line": 98
2026-06-19T23:28:15.7186624Z             }
2026-06-19T23:28:15.7186740Z           ]
2026-06-19T23:28:15.7186859Z         },
2026-06-19T23:28:15.7186987Z         "impl": {
2026-06-19T23:28:15.7187125Z           "complete": true,
2026-06-19T23:28:15.7187263Z           "evidence": [
2026-06-19T23:28:15.7187388Z             {
2026-06-19T23:28:15.7187559Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7187684Z               "line": 287
2026-06-19T23:28:15.7187807Z             },
2026-06-19T23:28:15.7187941Z             {
2026-06-19T23:28:15.7188108Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7188235Z               "line": 301
2026-06-19T23:28:15.7188355Z             },
2026-06-19T23:28:15.7188481Z             {
2026-06-19T23:28:15.7188643Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7188763Z               "line": 326
2026-06-19T23:28:15.7188890Z             },
2026-06-19T23:28:15.7189073Z             {
2026-06-19T23:28:15.7189248Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7189378Z               "line": 230
2026-06-19T23:28:15.7189506Z             },
2026-06-19T23:28:15.7189636Z             {
2026-06-19T23:28:15.7189797Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7189936Z               "line": 91
2026-06-19T23:28:15.7190059Z             },
2026-06-19T23:28:15.7190173Z             {
2026-06-19T23:28:15.7190317Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7190450Z               "line": 2197
2026-06-19T23:28:15.7190566Z             },
2026-06-19T23:28:15.7190693Z             {
2026-06-19T23:28:15.7190842Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7190971Z               "line": 2246
2026-06-19T23:28:15.7191097Z             },
2026-06-19T23:28:15.7191217Z             {
2026-06-19T23:28:15.7191367Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7191496Z               "line": 2325
2026-06-19T23:28:15.7191625Z             },
2026-06-19T23:28:15.7191748Z             {
2026-06-19T23:28:15.7191897Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7192039Z               "line": 2364
2026-06-19T23:28:15.7192169Z             }
2026-06-19T23:28:15.7192292Z           ]
2026-06-19T23:28:15.7192415Z         },
2026-06-19T23:28:15.7192545Z         "int": {
2026-06-19T23:28:15.7192688Z           "complete": true,
2026-06-19T23:28:15.7192813Z           "evidence": [
2026-06-19T23:28:15.7192941Z             {
2026-06-19T23:28:15.7193213Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7193351Z               "line": 810
2026-06-19T23:28:15.7193476Z             },
2026-06-19T23:28:15.7193608Z             {
2026-06-19T23:28:15.7193784Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7193915Z               "line": 1345
2026-06-19T23:28:15.7194043Z             }
2026-06-19T23:28:15.7194163Z           ]
2026-06-19T23:28:15.7194286Z         },
2026-06-19T23:28:15.7194416Z         "unit": {
2026-06-19T23:28:15.7194545Z           "complete": true,
2026-06-19T23:28:15.7194678Z           "evidence": [
2026-06-19T23:28:15.7194911Z             {
2026-06-19T23:28:15.7195084Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7195212Z               "line": 1022
2026-06-19T23:28:15.7195340Z             },
2026-06-19T23:28:15.7195465Z             {
2026-06-19T23:28:15.7195636Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7195766Z               "line": 1090
2026-06-19T23:28:15.7195884Z             },
2026-06-19T23:28:15.7196009Z             {
2026-06-19T23:28:15.7196164Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7196300Z               "line": 8182
2026-06-19T23:28:15.7196424Z             },
2026-06-19T23:28:15.7196551Z             {
2026-06-19T23:28:15.7196704Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7196832Z               "line": 8237
2026-06-19T23:28:15.7196966Z             }
2026-06-19T23:28:15.7197090Z           ]
2026-06-19T23:28:15.7197218Z         }
2026-06-19T23:28:15.7197348Z       }
2026-06-19T23:28:15.7197457Z     },
2026-06-19T23:28:15.7197581Z     {
2026-06-19T23:28:15.7197709Z       "id": "REQ-PAIR-1",
2026-06-19T23:28:15.7197876Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-19T23:28:15.7197996Z       "requiredStages": [
2026-06-19T23:28:15.7198128Z         "impl",
2026-06-19T23:28:15.7198259Z         "unit",
2026-06-19T23:28:15.7198386Z         "int"
2026-06-19T23:28:15.7198510Z       ],
2026-06-19T23:28:15.7198640Z       "stages": {
2026-06-19T23:28:15.7198762Z         "doc": {
2026-06-19T23:28:15.7198895Z           "complete": false,
2026-06-19T23:28:15.7199094Z           "evidence": []
2026-06-19T23:28:15.7199212Z         },
2026-06-19T23:28:15.7199351Z         "impl": {
2026-06-19T23:28:15.7199489Z           "complete": true,
2026-06-19T23:28:15.7199609Z           "evidence": [
2026-06-19T23:28:15.7199737Z             {
2026-06-19T23:28:15.7199914Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.7200037Z               "line": 27
2026-06-19T23:28:15.7200157Z             },
2026-06-19T23:28:15.7200286Z             {
2026-06-19T23:28:15.7200462Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.7200595Z               "line": 88
2026-06-19T23:28:15.7200724Z             },
2026-06-19T23:28:15.7200849Z             {
2026-06-19T23:28:15.7201024Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.7201160Z               "line": 110
2026-06-19T23:28:15.7201286Z             },
2026-06-19T23:28:15.7201407Z             {
2026-06-19T23:28:15.7201573Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.7201710Z               "line": 153
2026-06-19T23:28:15.7201829Z             },
2026-06-19T23:28:15.7201956Z             {
2026-06-19T23:28:15.7202132Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.7202266Z               "line": 182
2026-06-19T23:28:15.7202389Z             },
2026-06-19T23:28:15.7202514Z             {
2026-06-19T23:28:15.7202690Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7202824Z               "line": 29
2026-06-19T23:28:15.7202952Z             },
2026-06-19T23:28:15.7203077Z             {
2026-06-19T23:28:15.7203267Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-19T23:28:15.7203401Z               "line": 31
2026-06-19T23:28:15.7203634Z             },
2026-06-19T23:28:15.7203778Z             {
2026-06-19T23:28:15.7203959Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7204088Z               "line": 44
2026-06-19T23:28:15.7204219Z             },
2026-06-19T23:28:15.7204344Z             {
2026-06-19T23:28:15.7204522Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7204647Z               "line": 171
2026-06-19T23:28:15.7204776Z             },
2026-06-19T23:28:15.7204894Z             {
2026-06-19T23:28:15.7205067Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7205319Z               "line": 376
2026-06-19T23:28:15.7205448Z             }
2026-06-19T23:28:15.7205576Z           ]
2026-06-19T23:28:15.7205691Z         },
2026-06-19T23:28:15.7205815Z         "int": {
2026-06-19T23:28:15.7205954Z           "complete": true,
2026-06-19T23:28:15.7206092Z           "evidence": [
2026-06-19T23:28:15.7206211Z             {
2026-06-19T23:28:15.7206368Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7206496Z               "line": 645
2026-06-19T23:28:15.7206622Z             },
2026-06-19T23:28:15.7206744Z             {
2026-06-19T23:28:15.7206912Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7207049Z               "line": 887
2026-06-19T23:28:15.7207177Z             }
2026-06-19T23:28:15.7207297Z           ]
2026-06-19T23:28:15.7207420Z         },
2026-06-19T23:28:15.7207549Z         "unit": {
2026-06-19T23:28:15.7207688Z           "complete": true,
2026-06-19T23:28:15.7207811Z           "evidence": [
2026-06-19T23:28:15.7207936Z             {
2026-06-19T23:28:15.7208121Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.7208251Z               "line": 236
2026-06-19T23:28:15.7208378Z             },
2026-06-19T23:28:15.7208504Z             {
2026-06-19T23:28:15.7208684Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-19T23:28:15.7208823Z               "line": 349
2026-06-19T23:28:15.7209013Z             },
2026-06-19T23:28:15.7209138Z             {
2026-06-19T23:28:15.7209313Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7209446Z               "line": 194
2026-06-19T23:28:15.7209569Z             },
2026-06-19T23:28:15.7209696Z             {
2026-06-19T23:28:15.7209864Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7209992Z               "line": 216
2026-06-19T23:28:15.7210121Z             },
2026-06-19T23:28:15.7210240Z             {
2026-06-19T23:28:15.7210417Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7210546Z               "line": 230
2026-06-19T23:28:15.7210664Z             },
2026-06-19T23:28:15.7210794Z             {
2026-06-19T23:28:15.7210964Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7211095Z               "line": 242
2026-06-19T23:28:15.7211222Z             },
2026-06-19T23:28:15.7211352Z             {
2026-06-19T23:28:15.7211527Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7211657Z               "line": 256
2026-06-19T23:28:15.7211790Z             },
2026-06-19T23:28:15.7211914Z             {
2026-06-19T23:28:15.7212095Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7212227Z               "line": 270
2026-06-19T23:28:15.7212356Z             },
2026-06-19T23:28:15.7212478Z             {
2026-06-19T23:28:15.7212644Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7212783Z               "line": 277
2026-06-19T23:28:15.7212906Z             },
2026-06-19T23:28:15.7213031Z             {
2026-06-19T23:28:15.7213198Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-19T23:28:15.7213337Z               "line": 295
2026-06-19T23:28:15.7213455Z             },
2026-06-19T23:28:15.7213565Z             {
2026-06-19T23:28:15.7213909Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7214037Z               "line": 968
2026-06-19T23:28:15.7214161Z             },
2026-06-19T23:28:15.7214286Z             {
2026-06-19T23:28:15.7214462Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7214592Z               "line": 1051
2026-06-19T23:28:15.7214714Z             },
2026-06-19T23:28:15.7214846Z             {
2026-06-19T23:28:15.7215007Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7215149Z               "line": 1121
2026-06-19T23:28:15.7215293Z             },
2026-06-19T23:28:15.7215421Z             {
2026-06-19T23:28:15.7215712Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7215846Z               "line": 1182
2026-06-19T23:28:15.7215970Z             },
2026-06-19T23:28:15.7216097Z             {
2026-06-19T23:28:15.7216270Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7216403Z               "line": 1238
2026-06-19T23:28:15.7216533Z             },
2026-06-19T23:28:15.7216661Z             {
2026-06-19T23:28:15.7216829Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7216961Z               "line": 1457
2026-06-19T23:28:15.7217076Z             }
2026-06-19T23:28:15.7217205Z           ]
2026-06-19T23:28:15.7217319Z         }
2026-06-19T23:28:15.7217439Z       }
2026-06-19T23:28:15.7217567Z     },
2026-06-19T23:28:15.7217689Z     {
2026-06-19T23:28:15.7217834Z       "id": "REQ-PAIR-2",
2026-06-19T23:28:15.7218018Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-19T23:28:15.7218163Z       "requiredStages": [],
2026-06-19T23:28:15.7218290Z       "stages": {
2026-06-19T23:28:15.7218420Z         "doc": {
2026-06-19T23:28:15.7218559Z           "complete": false,
2026-06-19T23:28:15.7218686Z           "evidence": []
2026-06-19T23:28:15.7218816Z         },
2026-06-19T23:28:15.7219025Z         "impl": {
2026-06-19T23:28:15.7219159Z           "complete": false,
2026-06-19T23:28:15.7219287Z           "evidence": []
2026-06-19T23:28:15.7219412Z         },
2026-06-19T23:28:15.7219544Z         "int": {
2026-06-19T23:28:15.7219679Z           "complete": false,
2026-06-19T23:28:15.7219807Z           "evidence": []
2026-06-19T23:28:15.7219930Z         },
2026-06-19T23:28:15.7220054Z         "unit": {
2026-06-19T23:28:15.7220180Z           "complete": false,
2026-06-19T23:28:15.7220309Z           "evidence": []
2026-06-19T23:28:15.7220434Z         }
2026-06-19T23:28:15.7220561Z       }
2026-06-19T23:28:15.7220686Z     },
2026-06-19T23:28:15.7220810Z     {
2026-06-19T23:28:15.7220943Z       "id": "REQ-PAIR-3",
2026-06-19T23:28:15.7221134Z       "title": "Fetch current pairing code from any paired node",
2026-06-19T23:28:15.7221268Z       "requiredStages": [
2026-06-19T23:28:15.7221387Z         "impl",
2026-06-19T23:28:15.7221515Z         "unit"
2026-06-19T23:28:15.7221635Z       ],
2026-06-19T23:28:15.7221764Z       "stages": {
2026-06-19T23:28:15.7221892Z         "doc": {
2026-06-19T23:28:15.7222026Z           "complete": false,
2026-06-19T23:28:15.7222159Z           "evidence": []
2026-06-19T23:28:15.7222289Z         },
2026-06-19T23:28:15.7222416Z         "impl": {
2026-06-19T23:28:15.7222561Z           "complete": true,
2026-06-19T23:28:15.7222683Z           "evidence": [
2026-06-19T23:28:15.7222815Z             {
2026-06-19T23:28:15.7222968Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7223104Z               "line": 3231
2026-06-19T23:28:15.7223234Z             },
2026-06-19T23:28:15.7223367Z             {
2026-06-19T23:28:15.7223524Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7223654Z               "line": 3300
2026-06-19T23:28:15.7223800Z             },
2026-06-19T23:28:15.7223925Z             {
2026-06-19T23:28:15.7224077Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7224217Z               "line": 3681
2026-06-19T23:28:15.7224344Z             },
2026-06-19T23:28:15.7224574Z             {
2026-06-19T23:28:15.7224726Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7224860Z               "line": 4933
2026-06-19T23:28:15.7224983Z             }
2026-06-19T23:28:15.7225104Z           ]
2026-06-19T23:28:15.7225232Z         },
2026-06-19T23:28:15.7225354Z         "int": {
2026-06-19T23:28:15.7225497Z           "complete": false,
2026-06-19T23:28:15.7225624Z           "evidence": []
2026-06-19T23:28:15.7225752Z         },
2026-06-19T23:28:15.7225882Z         "unit": {
2026-06-19T23:28:15.7226014Z           "complete": true,
2026-06-19T23:28:15.7226154Z           "evidence": [
2026-06-19T23:28:15.7226272Z             {
2026-06-19T23:28:15.7226530Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7226658Z               "line": 9936
2026-06-19T23:28:15.7226788Z             },
2026-06-19T23:28:15.7226897Z             {
2026-06-19T23:28:15.7227055Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7227193Z               "line": 10151
2026-06-19T23:28:15.7227316Z             },
2026-06-19T23:28:15.7227446Z             {
2026-06-19T23:28:15.7227593Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7227723Z               "line": 10810
2026-06-19T23:28:15.7227850Z             },
2026-06-19T23:28:15.7227980Z             {
2026-06-19T23:28:15.7228132Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7228259Z               "line": 10829
2026-06-19T23:28:15.7228384Z             },
2026-06-19T23:28:15.7228508Z             {
2026-06-19T23:28:15.7228670Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7228804Z               "line": 10853
2026-06-19T23:28:15.7229004Z             },
2026-06-19T23:28:15.7229119Z             {
2026-06-19T23:28:15.7229270Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7229400Z               "line": 10872
2026-06-19T23:28:15.7229522Z             },
2026-06-19T23:28:15.7229653Z             {
2026-06-19T23:28:15.7229800Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7229948Z               "line": 10885
2026-06-19T23:28:15.7230080Z             },
2026-06-19T23:28:15.7230201Z             {
2026-06-19T23:28:15.7230354Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7230490Z               "line": 10894
2026-06-19T23:28:15.7230623Z             }
2026-06-19T23:28:15.7230740Z           ]
2026-06-19T23:28:15.7230869Z         }
2026-06-19T23:28:15.7230994Z       }
2026-06-19T23:28:15.7231117Z     },
2026-06-19T23:28:15.7231246Z     {
2026-06-19T23:28:15.7231384Z       "id": "REQ-PAIR-4",
2026-06-19T23:28:15.7231547Z       "title": "Subnet naming on first pairing",
2026-06-19T23:28:15.7231690Z       "requiredStages": [
2026-06-19T23:28:15.7231823Z         "impl",
2026-06-19T23:28:15.7231952Z         "unit"
2026-06-19T23:28:15.7232075Z       ],
2026-06-19T23:28:15.7232205Z       "stages": {
2026-06-19T23:28:15.7232334Z         "doc": {
2026-06-19T23:28:15.7232467Z           "complete": false,
2026-06-19T23:28:15.7232600Z           "evidence": []
2026-06-19T23:28:15.7232728Z         },
2026-06-19T23:28:15.7232859Z         "impl": {
2026-06-19T23:28:15.7232991Z           "complete": true,
2026-06-19T23:28:15.7233126Z           "evidence": [
2026-06-19T23:28:15.7233253Z             {
2026-06-19T23:28:15.7233429Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-19T23:28:15.7233561Z               "line": 174
2026-06-19T23:28:15.7233693Z             }
2026-06-19T23:28:15.7233823Z           ]
2026-06-19T23:28:15.7233936Z         },
2026-06-19T23:28:15.7234060Z         "int": {
2026-06-19T23:28:15.7234189Z           "complete": false,
2026-06-19T23:28:15.7234322Z           "evidence": []
2026-06-19T23:28:15.7234443Z         },
2026-06-19T23:28:15.7234571Z         "unit": {
2026-06-19T23:28:15.7234704Z           "complete": true,
2026-06-19T23:28:15.7234833Z           "evidence": [
2026-06-19T23:28:15.7234962Z             {
2026-06-19T23:28:15.7235143Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7235378Z               "line": 1294
2026-06-19T23:28:15.7235500Z             }
2026-06-19T23:28:15.7235629Z           ]
2026-06-19T23:28:15.7235759Z         }
2026-06-19T23:28:15.7235886Z       }
2026-06-19T23:28:15.7236009Z     },
2026-06-19T23:28:15.7236127Z     {
2026-06-19T23:28:15.7236264Z       "id": "REQ-PAIR-5",
2026-06-19T23:28:15.7236627Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-19T23:28:15.7236771Z       "requiredStages": [
2026-06-19T23:28:15.7236903Z         "impl",
2026-06-19T23:28:15.7237028Z         "unit",
2026-06-19T23:28:15.7237152Z         "int"
2026-06-19T23:28:15.7237376Z       ],
2026-06-19T23:28:15.7237504Z       "stages": {
2026-06-19T23:28:15.7237625Z         "doc": {
2026-06-19T23:28:15.7237767Z           "complete": false,
2026-06-19T23:28:15.7237901Z           "evidence": []
2026-06-19T23:28:15.7238020Z         },
2026-06-19T23:28:15.7238148Z         "impl": {
2026-06-19T23:28:15.7238279Z           "complete": true,
2026-06-19T23:28:15.7238415Z           "evidence": [
2026-06-19T23:28:15.7238540Z             {
2026-06-19T23:28:15.7238724Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7238848Z               "line": 44
2026-06-19T23:28:15.7239035Z             },
2026-06-19T23:28:15.7239163Z             {
2026-06-19T23:28:15.7239340Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7239472Z               "line": 96
2026-06-19T23:28:15.7239598Z             },
2026-06-19T23:28:15.7239730Z             {
2026-06-19T23:28:15.7239912Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7240036Z               "line": 107
2026-06-19T23:28:15.7240165Z             },
2026-06-19T23:28:15.7240293Z             {
2026-06-19T23:28:15.7240470Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7240589Z               "line": 124
2026-06-19T23:28:15.7240727Z             },
2026-06-19T23:28:15.7240852Z             {
2026-06-19T23:28:15.7241026Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7241164Z               "line": 155
2026-06-19T23:28:15.7241282Z             },
2026-06-19T23:28:15.7241410Z             {
2026-06-19T23:28:15.7241583Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7241720Z               "line": 195
2026-06-19T23:28:15.7241850Z             },
2026-06-19T23:28:15.7241968Z             {
2026-06-19T23:28:15.7242145Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7242278Z               "line": 251
2026-06-19T23:28:15.7242403Z             },
2026-06-19T23:28:15.7242531Z             {
2026-06-19T23:28:15.7242727Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7242864Z               "line": 33
2026-06-19T23:28:15.7242988Z             },
2026-06-19T23:28:15.7243118Z             {
2026-06-19T23:28:15.7243308Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7243443Z               "line": 45
2026-06-19T23:28:15.7243570Z             },
2026-06-19T23:28:15.7243695Z             {
2026-06-19T23:28:15.7243893Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7244031Z               "line": 59
2026-06-19T23:28:15.7244159Z             },
2026-06-19T23:28:15.7244281Z             {
2026-06-19T23:28:15.7244464Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7244592Z               "line": 376
2026-06-19T23:28:15.7244717Z             }
2026-06-19T23:28:15.7244849Z           ]
2026-06-19T23:28:15.7244974Z         },
2026-06-19T23:28:15.7245108Z         "int": {
2026-06-19T23:28:15.7245236Z           "complete": true,
2026-06-19T23:28:15.7245374Z           "evidence": [
2026-06-19T23:28:15.7245498Z             {
2026-06-19T23:28:15.7245671Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7245909Z               "line": 887
2026-06-19T23:28:15.7246037Z             },
2026-06-19T23:28:15.7246170Z             {
2026-06-19T23:28:15.7246343Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7246479Z               "line": 342
2026-06-19T23:28:15.7246608Z             }
2026-06-19T23:28:15.7246734Z           ]
2026-06-19T23:28:15.7246853Z         },
2026-06-19T23:28:15.7246983Z         "unit": {
2026-06-19T23:28:15.7247125Z           "complete": true,
2026-06-19T23:28:15.7247255Z           "evidence": [
2026-06-19T23:28:15.7247378Z             {
2026-06-19T23:28:15.7247570Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7247797Z               "line": 293
2026-06-19T23:28:15.7247927Z             },
2026-06-19T23:28:15.7248041Z             {
2026-06-19T23:28:15.7248218Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7248351Z               "line": 304
2026-06-19T23:28:15.7248480Z             },
2026-06-19T23:28:15.7248608Z             {
2026-06-19T23:28:15.7248776Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7248913Z               "line": 406
2026-06-19T23:28:15.7249119Z             },
2026-06-19T23:28:15.7249247Z             {
2026-06-19T23:28:15.7249437Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7249571Z               "line": 72
2026-06-19T23:28:15.7249694Z             },
2026-06-19T23:28:15.7249819Z             {
2026-06-19T23:28:15.7250004Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7250129Z               "line": 82
2026-06-19T23:28:15.7250267Z             },
2026-06-19T23:28:15.7250391Z             {
2026-06-19T23:28:15.7250582Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7250710Z               "line": 100
2026-06-19T23:28:15.7250830Z             },
2026-06-19T23:28:15.7250958Z             {
2026-06-19T23:28:15.7251145Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7251282Z               "line": 110
2026-06-19T23:28:15.7251407Z             },
2026-06-19T23:28:15.7251535Z             {
2026-06-19T23:28:15.7251725Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-19T23:28:15.7251861Z               "line": 125
2026-06-19T23:28:15.7251989Z             },
2026-06-19T23:28:15.7252109Z             {
2026-06-19T23:28:15.7252290Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7252424Z               "line": 1044
2026-06-19T23:28:15.7252542Z             },
2026-06-19T23:28:15.7252681Z             {
2026-06-19T23:28:15.7252852Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7252987Z               "line": 1110
2026-06-19T23:28:15.7253115Z             },
2026-06-19T23:28:15.7253244Z             {
2026-06-19T23:28:15.7253415Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7253548Z               "line": 1357
2026-06-19T23:28:15.7253678Z             }
2026-06-19T23:28:15.7253802Z           ]
2026-06-19T23:28:15.7253932Z         }
2026-06-19T23:28:15.7254059Z       }
2026-06-19T23:28:15.7254188Z     },
2026-06-19T23:28:15.7254318Z     {
2026-06-19T23:28:15.7254453Z       "id": "REQ-PAIR-6",
2026-06-19T23:28:15.7254780Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-19T23:28:15.7254923Z       "requiredStages": [
2026-06-19T23:28:15.7255043Z         "impl",
2026-06-19T23:28:15.7255171Z         "unit"
2026-06-19T23:28:15.7255296Z       ],
2026-06-19T23:28:15.7255433Z       "stages": {
2026-06-19T23:28:15.7255558Z         "doc": {
2026-06-19T23:28:15.7255706Z           "complete": false,
2026-06-19T23:28:15.7255839Z           "evidence": []
2026-06-19T23:28:15.7255967Z         },
2026-06-19T23:28:15.7256096Z         "impl": {
2026-06-19T23:28:15.7256240Z           "complete": true,
2026-06-19T23:28:15.7256479Z           "evidence": [
2026-06-19T23:28:15.7256607Z             {
2026-06-19T23:28:15.7256759Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7256894Z               "line": 3300
2026-06-19T23:28:15.7257020Z             },
2026-06-19T23:28:15.7257144Z             {
2026-06-19T23:28:15.7257299Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7257438Z               "line": 3681
2026-06-19T23:28:15.7257563Z             },
2026-06-19T23:28:15.7257695Z             {
2026-06-19T23:28:15.7257853Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.7257976Z               "line": 18
2026-06-19T23:28:15.7258220Z             },
2026-06-19T23:28:15.7258353Z             {
2026-06-19T23:28:15.7258515Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.7258644Z               "line": 49
2026-06-19T23:28:15.7258774Z             },
2026-06-19T23:28:15.7258902Z             {
2026-06-19T23:28:15.7259122Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.7259245Z               "line": 318
2026-06-19T23:28:15.7259365Z             }
2026-06-19T23:28:15.7259492Z           ]
2026-06-19T23:28:15.7259617Z         },
2026-06-19T23:28:15.7259751Z         "int": {
2026-06-19T23:28:15.7259878Z           "complete": false,
2026-06-19T23:28:15.7260011Z           "evidence": []
2026-06-19T23:28:15.7260136Z         },
2026-06-19T23:28:15.7260263Z         "unit": {
2026-06-19T23:28:15.7260408Z           "complete": true,
2026-06-19T23:28:15.7260531Z           "evidence": [
2026-06-19T23:28:15.7260661Z             {
2026-06-19T23:28:15.7260808Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7260951Z               "line": 10907
2026-06-19T23:28:15.7261075Z             },
2026-06-19T23:28:15.7261203Z             {
2026-06-19T23:28:15.7261352Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7261480Z               "line": 10924
2026-06-19T23:28:15.7261605Z             },
2026-06-19T23:28:15.7261733Z             {
2026-06-19T23:28:15.7261885Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.7262019Z               "line": 383
2026-06-19T23:28:15.7262146Z             },
2026-06-19T23:28:15.7262280Z             {
2026-06-19T23:28:15.7262431Z               "path": "crates/spt/src/elevation.rs",
2026-06-19T23:28:15.7262559Z               "line": 392
2026-06-19T23:28:15.7262674Z             }
2026-06-19T23:28:15.7262797Z           ]
2026-06-19T23:28:15.7262922Z         }
2026-06-19T23:28:15.7263045Z       }
2026-06-19T23:28:15.7263164Z     },
2026-06-19T23:28:15.7263289Z     {
2026-06-19T23:28:15.7263431Z       "id": "REQ-PAIR-7",
2026-06-19T23:28:15.7263642Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-19T23:28:15.7263779Z       "requiredStages": [],
2026-06-19T23:28:15.7263895Z       "stages": {
2026-06-19T23:28:15.7264023Z         "doc": {
2026-06-19T23:28:15.7264167Z           "complete": false,
2026-06-19T23:28:15.7264290Z           "evidence": []
2026-06-19T23:28:15.7264418Z         },
2026-06-19T23:28:15.7264543Z         "impl": {
2026-06-19T23:28:15.7264686Z           "complete": false,
2026-06-19T23:28:15.7264816Z           "evidence": []
2026-06-19T23:28:15.7264934Z         },
2026-06-19T23:28:15.7265061Z         "int": {
2026-06-19T23:28:15.7265199Z           "complete": false,
2026-06-19T23:28:15.7265326Z           "evidence": []
2026-06-19T23:28:15.7265455Z         },
2026-06-19T23:28:15.7265589Z         "unit": {
2026-06-19T23:28:15.7265726Z           "complete": false,
2026-06-19T23:28:15.7265865Z           "evidence": []
2026-06-19T23:28:15.7265998Z         }
2026-06-19T23:28:15.7266128Z       }
2026-06-19T23:28:15.7266256Z     },
2026-06-19T23:28:15.7266380Z     {
2026-06-19T23:28:15.7266514Z       "id": "REQ-PAIR-8",
2026-06-19T23:28:15.7268017Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-19T23:28:15.7268283Z       "requiredStages": [
2026-06-19T23:28:15.7268408Z         "impl",
2026-06-19T23:28:15.7268531Z         "unit"
2026-06-19T23:28:15.7268651Z       ],
2026-06-19T23:28:15.7268780Z       "stages": {
2026-06-19T23:28:15.7272035Z         "doc": {
2026-06-19T23:28:15.7272213Z           "complete": false,
2026-06-19T23:28:15.7272354Z           "evidence": []
2026-06-19T23:28:15.7272475Z         },
2026-06-19T23:28:15.7272749Z         "impl": {
2026-06-19T23:28:15.7272892Z           "complete": true,
2026-06-19T23:28:15.7273019Z           "evidence": [
2026-06-19T23:28:15.7273148Z             {
2026-06-19T23:28:15.7273329Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7273458Z               "line": 577
2026-06-19T23:28:15.7273591Z             },
2026-06-19T23:28:15.7273719Z             {
2026-06-19T23:28:15.7273906Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-19T23:28:15.7274044Z               "line": 22
2026-06-19T23:28:15.7274164Z             },
2026-06-19T23:28:15.7274292Z             {
2026-06-19T23:28:15.7274474Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-19T23:28:15.7274602Z               "line": 76
2026-06-19T23:28:15.7274727Z             },
2026-06-19T23:28:15.7274860Z             {
2026-06-19T23:28:15.7275042Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-19T23:28:15.7275174Z               "line": 127
2026-06-19T23:28:15.7275298Z             }
2026-06-19T23:28:15.7275423Z           ]
2026-06-19T23:28:15.7275550Z         },
2026-06-19T23:28:15.7275674Z         "int": {
2026-06-19T23:28:15.7275825Z           "complete": false,
2026-06-19T23:28:15.7275962Z           "evidence": []
2026-06-19T23:28:15.7276087Z         },
2026-06-19T23:28:15.7276224Z         "unit": {
2026-06-19T23:28:15.7276359Z           "complete": true,
2026-06-19T23:28:15.7276487Z           "evidence": [
2026-06-19T23:28:15.7276611Z             {
2026-06-19T23:28:15.7276783Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-19T23:28:15.7276921Z               "line": 183
2026-06-19T23:28:15.7277041Z             },
2026-06-19T23:28:15.7277164Z             {
2026-06-19T23:28:15.7277332Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-19T23:28:15.7277469Z               "line": 195
2026-06-19T23:28:15.7277594Z             },
2026-06-19T23:28:15.7277718Z             {
2026-06-19T23:28:15.7277889Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-19T23:28:15.7278019Z               "line": 211
2026-06-19T23:28:15.7278140Z             },
2026-06-19T23:28:15.7278265Z             {
2026-06-19T23:28:15.7278434Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-19T23:28:15.7278563Z               "line": 227
2026-06-19T23:28:15.7278688Z             }
2026-06-19T23:28:15.7278810Z           ]
2026-06-19T23:28:15.7278926Z         }
2026-06-19T23:28:15.7279125Z       }
2026-06-19T23:28:15.7279250Z     },
2026-06-19T23:28:15.7279379Z     {
2026-06-19T23:28:15.7279522Z       "id": "REQ-PICKER-1",
2026-06-19T23:28:15.7283243Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-19T23:28:15.7283531Z       "requiredStages": [
2026-06-19T23:28:15.7283665Z         "impl",
2026-06-19T23:28:15.7283800Z         "unit"
2026-06-19T23:28:15.7284028Z       ],
2026-06-19T23:28:15.7284147Z       "stages": {
2026-06-19T23:28:15.7284279Z         "doc": {
2026-06-19T23:28:15.7284414Z           "complete": false,
2026-06-19T23:28:15.7284547Z           "evidence": []
2026-06-19T23:28:15.7284677Z         },
2026-06-19T23:28:15.7284805Z         "impl": {
2026-06-19T23:28:15.7284948Z           "complete": true,
2026-06-19T23:28:15.7285076Z           "evidence": [
2026-06-19T23:28:15.7285205Z             {
2026-06-19T23:28:15.7285368Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7285501Z               "line": 248
2026-06-19T23:28:15.7285631Z             },
2026-06-19T23:28:15.7285758Z             {
2026-06-19T23:28:15.7285931Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7286063Z               "line": 240
2026-06-19T23:28:15.7286191Z             }
2026-06-19T23:28:15.7286319Z           ]
2026-06-19T23:28:15.7286442Z         },
2026-06-19T23:28:15.7286575Z         "int": {
2026-06-19T23:28:15.7286714Z           "complete": false,
2026-06-19T23:28:15.7286851Z           "evidence": []
2026-06-19T23:28:15.7286976Z         },
2026-06-19T23:28:15.7287095Z         "unit": {
2026-06-19T23:28:15.7287243Z           "complete": true,
2026-06-19T23:28:15.7287372Z           "evidence": [
2026-06-19T23:28:15.7287505Z             {
2026-06-19T23:28:15.7287672Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.7287796Z               "line": 450
2026-06-19T23:28:15.7287920Z             },
2026-06-19T23:28:15.7288044Z             {
2026-06-19T23:28:15.7288211Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7288343Z               "line": 749
2026-06-19T23:28:15.7288469Z             },
2026-06-19T23:28:15.7288588Z             {
2026-06-19T23:28:15.7288758Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7288872Z               "line": 849
2026-06-19T23:28:15.7289075Z             },
2026-06-19T23:28:15.7289205Z             {
2026-06-19T23:28:15.7289370Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7289510Z               "line": 455
2026-06-19T23:28:15.7289624Z             }
2026-06-19T23:28:15.7289752Z           ]
2026-06-19T23:28:15.7289876Z         }
2026-06-19T23:28:15.7289995Z       }
2026-06-19T23:28:15.7290120Z     },
2026-06-19T23:28:15.7290248Z     {
2026-06-19T23:28:15.7290391Z       "id": "REQ-PICKER-2",
2026-06-19T23:28:15.7292431Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-19T23:28:15.7292593Z       "requiredStages": [
2026-06-19T23:28:15.7292718Z         "impl",
2026-06-19T23:28:15.7292845Z         "unit"
2026-06-19T23:28:15.7292970Z       ],
2026-06-19T23:28:15.7293093Z       "stages": {
2026-06-19T23:28:15.7293227Z         "doc": {
2026-06-19T23:28:15.7293575Z           "complete": false,
2026-06-19T23:28:15.7293714Z           "evidence": []
2026-06-19T23:28:15.7293846Z         },
2026-06-19T23:28:15.7293970Z         "impl": {
2026-06-19T23:28:15.7294115Z           "complete": true,
2026-06-19T23:28:15.7294249Z           "evidence": [
2026-06-19T23:28:15.7294374Z             {
2026-06-19T23:28:15.7294559Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7294693Z               "line": 183
2026-06-19T23:28:15.7294821Z             },
2026-06-19T23:28:15.7294969Z             {
2026-06-19T23:28:15.7295159Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7295289Z               "line": 296
2026-06-19T23:28:15.7295518Z             }
2026-06-19T23:28:15.7295651Z           ]
2026-06-19T23:28:15.7295770Z         },
2026-06-19T23:28:15.7295905Z         "int": {
2026-06-19T23:28:15.7296032Z           "complete": false,
2026-06-19T23:28:15.7296172Z           "evidence": []
2026-06-19T23:28:15.7296299Z         },
2026-06-19T23:28:15.7296428Z         "unit": {
2026-06-19T23:28:15.7296562Z           "complete": true,
2026-06-19T23:28:15.7296690Z           "evidence": [
2026-06-19T23:28:15.7296818Z             {
2026-06-19T23:28:15.7296992Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7297121Z               "line": 655
2026-06-19T23:28:15.7297250Z             }
2026-06-19T23:28:15.7297368Z           ]
2026-06-19T23:28:15.7297493Z         }
2026-06-19T23:28:15.7297603Z       }
2026-06-19T23:28:15.7297726Z     },
2026-06-19T23:28:15.7297851Z     {
2026-06-19T23:28:15.7297993Z       "id": "REQ-PICKER-3",
2026-06-19T23:28:15.7300666Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-19T23:28:15.7300828Z       "requiredStages": [
2026-06-19T23:28:15.7300946Z         "impl",
2026-06-19T23:28:15.7301061Z         "unit"
2026-06-19T23:28:15.7301185Z       ],
2026-06-19T23:28:15.7301310Z       "stages": {
2026-06-19T23:28:15.7301447Z         "doc": {
2026-06-19T23:28:15.7301586Z           "complete": false,
2026-06-19T23:28:15.7301724Z           "evidence": []
2026-06-19T23:28:15.7301843Z         },
2026-06-19T23:28:15.7301977Z         "impl": {
2026-06-19T23:28:15.7302109Z           "complete": true,
2026-06-19T23:28:15.7302237Z           "evidence": [
2026-06-19T23:28:15.7302368Z             {
2026-06-19T23:28:15.7302537Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7302672Z               "line": 124
2026-06-19T23:28:15.7302795Z             }
2026-06-19T23:28:15.7302925Z           ]
2026-06-19T23:28:15.7303040Z         },
2026-06-19T23:28:15.7303158Z         "int": {
2026-06-19T23:28:15.7303292Z           "complete": false,
2026-06-19T23:28:15.7303415Z           "evidence": []
2026-06-19T23:28:15.7303540Z         },
2026-06-19T23:28:15.7303668Z         "unit": {
2026-06-19T23:28:15.7303806Z           "complete": true,
2026-06-19T23:28:15.7303936Z           "evidence": [
2026-06-19T23:28:15.7304059Z             {
2026-06-19T23:28:15.7304227Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7304358Z               "line": 366
2026-06-19T23:28:15.7304478Z             }
2026-06-19T23:28:15.7304601Z           ]
2026-06-19T23:28:15.7304723Z         }
2026-06-19T23:28:15.7304843Z       }
2026-06-19T23:28:15.7305080Z     },
2026-06-19T23:28:15.7305215Z     {
2026-06-19T23:28:15.7305347Z       "id": "REQ-PICKER-4",
2026-06-19T23:28:15.7307350Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-19T23:28:15.7307600Z       "requiredStages": [
2026-06-19T23:28:15.7307729Z         "impl",
2026-06-19T23:28:15.7307857Z         "unit"
2026-06-19T23:28:15.7307981Z       ],
2026-06-19T23:28:15.7308106Z       "stages": {
2026-06-19T23:28:15.7308229Z         "doc": {
2026-06-19T23:28:15.7308369Z           "complete": false,
2026-06-19T23:28:15.7308506Z           "evidence": []
2026-06-19T23:28:15.7308625Z         },
2026-06-19T23:28:15.7308754Z         "impl": {
2026-06-19T23:28:15.7308878Z           "complete": true,
2026-06-19T23:28:15.7309073Z           "evidence": [
2026-06-19T23:28:15.7309197Z             {
2026-06-19T23:28:15.7309370Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7309503Z               "line": 353
2026-06-19T23:28:15.7309628Z             },
2026-06-19T23:28:15.7309750Z             {
2026-06-19T23:28:15.7309916Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7310048Z               "line": 105
2026-06-19T23:28:15.7310166Z             }
2026-06-19T23:28:15.7310291Z           ]
2026-06-19T23:28:15.7310419Z         },
2026-06-19T23:28:15.7310548Z         "int": {
2026-06-19T23:28:15.7310687Z           "complete": false,
2026-06-19T23:28:15.7310814Z           "evidence": []
2026-06-19T23:28:15.7310940Z         },
2026-06-19T23:28:15.7311059Z         "unit": {
2026-06-19T23:28:15.7311187Z           "complete": true,
2026-06-19T23:28:15.7311311Z           "evidence": [
2026-06-19T23:28:15.7311440Z             {
2026-06-19T23:28:15.7311607Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7311740Z               "line": 1246
2026-06-19T23:28:15.7311861Z             },
2026-06-19T23:28:15.7311983Z             {
2026-06-19T23:28:15.7312141Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7312279Z               "line": 424
2026-06-19T23:28:15.7312403Z             }
2026-06-19T23:28:15.7312537Z           ]
2026-06-19T23:28:15.7312660Z         }
2026-06-19T23:28:15.7312783Z       }
2026-06-19T23:28:15.7312908Z     },
2026-06-19T23:28:15.7313035Z     {
2026-06-19T23:28:15.7313175Z       "id": "REQ-PICKER-5",
2026-06-19T23:28:15.7316328Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-19T23:28:15.7316618Z       "requiredStages": [
2026-06-19T23:28:15.7316752Z         "impl",
2026-06-19T23:28:15.7316876Z         "unit"
2026-06-19T23:28:15.7317011Z       ],
2026-06-19T23:28:15.7317138Z       "stages": {
2026-06-19T23:28:15.7317268Z         "doc": {
2026-06-19T23:28:15.7317410Z           "complete": false,
2026-06-19T23:28:15.7317544Z           "evidence": []
2026-06-19T23:28:15.7317669Z         },
2026-06-19T23:28:15.7317795Z         "impl": {
2026-06-19T23:28:15.7317938Z           "complete": true,
2026-06-19T23:28:15.7318070Z           "evidence": [
2026-06-19T23:28:15.7318193Z             {
2026-06-19T23:28:15.7318351Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7318590Z               "line": 1774
2026-06-19T23:28:15.7318709Z             }
2026-06-19T23:28:15.7318827Z           ]
2026-06-19T23:28:15.7319014Z         },
2026-06-19T23:28:15.7319142Z         "int": {
2026-06-19T23:28:15.7319281Z           "complete": false,
2026-06-19T23:28:15.7319414Z           "evidence": []
2026-06-19T23:28:15.7319539Z         },
2026-06-19T23:28:15.7319662Z         "unit": {
2026-06-19T23:28:15.7319791Z           "complete": true,
2026-06-19T23:28:15.7319925Z           "evidence": [
2026-06-19T23:28:15.7320043Z             {
2026-06-19T23:28:15.7320202Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7320339Z               "line": 7498
2026-06-19T23:28:15.7320462Z             }
2026-06-19T23:28:15.7320590Z           ]
2026-06-19T23:28:15.7320712Z         }
2026-06-19T23:28:15.7320837Z       }
2026-06-19T23:28:15.7320956Z     },
2026-06-19T23:28:15.7321079Z     {
2026-06-19T23:28:15.7321252Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-19T23:28:15.7322745Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-19T23:28:15.7322896Z       "requiredStages": [],
2026-06-19T23:28:15.7323021Z       "stages": {
2026-06-19T23:28:15.7323145Z         "doc": {
2026-06-19T23:28:15.7323286Z           "complete": false,
2026-06-19T23:28:15.7323415Z           "evidence": []
2026-06-19T23:28:15.7323534Z         },
2026-06-19T23:28:15.7323658Z         "impl": {
2026-06-19T23:28:15.7323797Z           "complete": false,
2026-06-19T23:28:15.7323929Z           "evidence": []
2026-06-19T23:28:15.7324055Z         },
2026-06-19T23:28:15.7324183Z         "int": {
2026-06-19T23:28:15.7324311Z           "complete": false,
2026-06-19T23:28:15.7324446Z           "evidence": []
2026-06-19T23:28:15.7324573Z         },
2026-06-19T23:28:15.7324699Z         "unit": {
2026-06-19T23:28:15.7324827Z           "complete": false,
2026-06-19T23:28:15.7324956Z           "evidence": []
2026-06-19T23:28:15.7325084Z         }
2026-06-19T23:28:15.7325198Z       }
2026-06-19T23:28:15.7325314Z     },
2026-06-19T23:28:15.7325432Z     {
2026-06-19T23:28:15.7325593Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-19T23:28:15.7326754Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-19T23:28:15.7326903Z       "requiredStages": [
2026-06-19T23:28:15.7327026Z         "impl",
2026-06-19T23:28:15.7327155Z         "unit"
2026-06-19T23:28:15.7327270Z       ],
2026-06-19T23:28:15.7327389Z       "stages": {
2026-06-19T23:28:15.7327518Z         "doc": {
2026-06-19T23:28:15.7327651Z           "complete": false,
2026-06-19T23:28:15.7327784Z           "evidence": []
2026-06-19T23:28:15.7328017Z         },
2026-06-19T23:28:15.7328138Z         "impl": {
2026-06-19T23:28:15.7328271Z           "complete": true,
2026-06-19T23:28:15.7328403Z           "evidence": [
2026-06-19T23:28:15.7328527Z             {
2026-06-19T23:28:15.7328696Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7328816Z               "line": 275
2026-06-19T23:28:15.7329039Z             }
2026-06-19T23:28:15.7329160Z           ]
2026-06-19T23:28:15.7329288Z         },
2026-06-19T23:28:15.7329411Z         "int": {
2026-06-19T23:28:15.7329550Z           "complete": false,
2026-06-19T23:28:15.7329688Z           "evidence": []
2026-06-19T23:28:15.7329912Z         },
2026-06-19T23:28:15.7330045Z         "unit": {
2026-06-19T23:28:15.7330175Z           "complete": true,
2026-06-19T23:28:15.7330308Z           "evidence": [
2026-06-19T23:28:15.7330433Z             {
2026-06-19T23:28:15.7330599Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7330743Z               "line": 397
2026-06-19T23:28:15.7330865Z             }
2026-06-19T23:28:15.7330983Z           ]
2026-06-19T23:28:15.7331108Z         }
2026-06-19T23:28:15.7331225Z       }
2026-06-19T23:28:15.7331349Z     },
2026-06-19T23:28:15.7331469Z     {
2026-06-19T23:28:15.7331629Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-19T23:28:15.7333237Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-19T23:28:15.7333394Z       "requiredStages": [
2026-06-19T23:28:15.7333528Z         "impl",
2026-06-19T23:28:15.7333658Z         "unit"
2026-06-19T23:28:15.7333785Z       ],
2026-06-19T23:28:15.7333918Z       "stages": {
2026-06-19T23:28:15.7334048Z         "doc": {
2026-06-19T23:28:15.7334179Z           "complete": false,
2026-06-19T23:28:15.7334314Z           "evidence": []
2026-06-19T23:28:15.7334442Z         },
2026-06-19T23:28:15.7334572Z         "impl": {
2026-06-19T23:28:15.7334710Z           "complete": true,
2026-06-19T23:28:15.7334833Z           "evidence": [
2026-06-19T23:28:15.7334962Z             {
2026-06-19T23:28:15.7335133Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7335263Z               "line": 626
2026-06-19T23:28:15.7335387Z             }
2026-06-19T23:28:15.7335506Z           ]
2026-06-19T23:28:15.7335630Z         },
2026-06-19T23:28:15.7335759Z         "int": {
2026-06-19T23:28:15.7335898Z           "complete": false,
2026-06-19T23:28:15.7336030Z           "evidence": []
2026-06-19T23:28:15.7336158Z         },
2026-06-19T23:28:15.7336290Z         "unit": {
2026-06-19T23:28:15.7336432Z           "complete": true,
2026-06-19T23:28:15.7336567Z           "evidence": [
2026-06-19T23:28:15.7336685Z             {
2026-06-19T23:28:15.7336857Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7336990Z               "line": 1026
2026-06-19T23:28:15.7337114Z             },
2026-06-19T23:28:15.7337252Z             {
2026-06-19T23:28:15.7337419Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7337553Z               "line": 1040
2026-06-19T23:28:15.7337672Z             }
2026-06-19T23:28:15.7337801Z           ]
2026-06-19T23:28:15.7337925Z         }
2026-06-19T23:28:15.7338044Z       }
2026-06-19T23:28:15.7338173Z     },
2026-06-19T23:28:15.7338297Z     {
2026-06-19T23:28:15.7338450Z       "id": "REQ-PICKER-UX-V013",
2026-06-19T23:28:15.7340205Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-19T23:28:15.7340477Z       "requiredStages": [],
2026-06-19T23:28:15.7340601Z       "stages": {
2026-06-19T23:28:15.7340726Z         "doc": {
2026-06-19T23:28:15.7340863Z           "complete": false,
2026-06-19T23:28:15.7340988Z           "evidence": []
2026-06-19T23:28:15.7341115Z         },
2026-06-19T23:28:15.7341346Z         "impl": {
2026-06-19T23:28:15.7341477Z           "complete": false,
2026-06-19T23:28:15.7341606Z           "evidence": []
2026-06-19T23:28:15.7341729Z         },
2026-06-19T23:28:15.7341856Z         "int": {
2026-06-19T23:28:15.7341981Z           "complete": false,
2026-06-19T23:28:15.7342123Z           "evidence": []
2026-06-19T23:28:15.7342243Z         },
2026-06-19T23:28:15.7342367Z         "unit": {
2026-06-19T23:28:15.7342509Z           "complete": false,
2026-06-19T23:28:15.7342644Z           "evidence": []
2026-06-19T23:28:15.7342771Z         }
2026-06-19T23:28:15.7342897Z       }
2026-06-19T23:28:15.7343025Z     },
2026-06-19T23:28:15.7343149Z     {
2026-06-19T23:28:15.7343292Z       "id": "REQ-PRES-1",
2026-06-19T23:28:15.7344726Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-19T23:28:15.7344874Z       "requiredStages": [
2026-06-19T23:28:15.7344997Z         "impl",
2026-06-19T23:28:15.7345132Z         "unit",
2026-06-19T23:28:15.7345251Z         "int"
2026-06-19T23:28:15.7345374Z       ],
2026-06-19T23:28:15.7345499Z       "stages": {
2026-06-19T23:28:15.7345632Z         "doc": {
2026-06-19T23:28:15.7345766Z           "complete": true,
2026-06-19T23:28:15.7345909Z           "evidence": [
2026-06-19T23:28:15.7346037Z             {
2026-06-19T23:28:15.7346186Z               "path": "docs/DEFERRED.md",
2026-06-19T23:28:15.7346319Z               "line": 11
2026-06-19T23:28:15.7346440Z             }
2026-06-19T23:28:15.7346571Z           ]
2026-06-19T23:28:15.7346694Z         },
2026-06-19T23:28:15.7346822Z         "impl": {
2026-06-19T23:28:15.7346963Z           "complete": true,
2026-06-19T23:28:15.7347102Z           "evidence": [
2026-06-19T23:28:15.7347226Z             {
2026-06-19T23:28:15.7347398Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7347531Z               "line": 515
2026-06-19T23:28:15.7347655Z             },
2026-06-19T23:28:15.7347784Z             {
2026-06-19T23:28:15.7347955Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7348080Z               "line": 567
2026-06-19T23:28:15.7348208Z             },
2026-06-19T23:28:15.7348333Z             {
2026-06-19T23:28:15.7348499Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7348628Z               "line": 188
2026-06-19T23:28:15.7348757Z             },
2026-06-19T23:28:15.7348894Z             {
2026-06-19T23:28:15.7349128Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7349272Z               "line": 214
2026-06-19T23:28:15.7349387Z             },
2026-06-19T23:28:15.7349509Z             {
2026-06-19T23:28:15.7349680Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7349821Z               "line": 28
2026-06-19T23:28:15.7349936Z             },
2026-06-19T23:28:15.7350061Z             {
2026-06-19T23:28:15.7350217Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7350465Z               "line": 105
2026-06-19T23:28:15.7350590Z             },
2026-06-19T23:28:15.7350719Z             {
2026-06-19T23:28:15.7350890Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7351023Z               "line": 161
2026-06-19T23:28:15.7351147Z             },
2026-06-19T23:28:15.7351267Z             {
2026-06-19T23:28:15.7351433Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7351567Z               "line": 180
2026-06-19T23:28:15.7351690Z             },
2026-06-19T23:28:15.7351825Z             {
2026-06-19T23:28:15.7352005Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7352238Z               "line": 421
2026-06-19T23:28:15.7352364Z             },
2026-06-19T23:28:15.7352493Z             {
2026-06-19T23:28:15.7352660Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7352793Z               "line": 289
2026-06-19T23:28:15.7352913Z             },
2026-06-19T23:28:15.7353046Z             {
2026-06-19T23:28:15.7353204Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7353341Z               "line": 336
2026-06-19T23:28:15.7353466Z             },
2026-06-19T23:28:15.7353589Z             {
2026-06-19T23:28:15.7353752Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7353880Z               "line": 362
2026-06-19T23:28:15.7354009Z             },
2026-06-19T23:28:15.7354134Z             {
2026-06-19T23:28:15.7354300Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7354430Z               "line": 100
2026-06-19T23:28:15.7354557Z             }
2026-06-19T23:28:15.7354687Z           ]
2026-06-19T23:28:15.7354811Z         },
2026-06-19T23:28:15.7354938Z         "int": {
2026-06-19T23:28:15.7355072Z           "complete": true,
2026-06-19T23:28:15.7355210Z           "evidence": [
2026-06-19T23:28:15.7355333Z             {
2026-06-19T23:28:15.7355511Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7355653Z               "line": 563
2026-06-19T23:28:15.7355777Z             },
2026-06-19T23:28:15.7355906Z             {
2026-06-19T23:28:15.7356069Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7356201Z               "line": 747
2026-06-19T23:28:15.7356317Z             },
2026-06-19T23:28:15.7356440Z             {
2026-06-19T23:28:15.7356622Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7356760Z               "line": 1165
2026-06-19T23:28:15.7356893Z             }
2026-06-19T23:28:15.7357014Z           ]
2026-06-19T23:28:15.7357150Z         },
2026-06-19T23:28:15.7357273Z         "unit": {
2026-06-19T23:28:15.7357410Z           "complete": true,
2026-06-19T23:28:15.7357552Z           "evidence": [
2026-06-19T23:28:15.7357672Z             {
2026-06-19T23:28:15.7357848Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.7357982Z               "line": 674
2026-06-19T23:28:15.7358115Z             },
2026-06-19T23:28:15.7358239Z             {
2026-06-19T23:28:15.7358411Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7358549Z               "line": 238
2026-06-19T23:28:15.7358673Z             },
2026-06-19T23:28:15.7358802Z             {
2026-06-19T23:28:15.7359036Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7359169Z               "line": 269
2026-06-19T23:28:15.7359289Z             },
2026-06-19T23:28:15.7359412Z             {
2026-06-19T23:28:15.7359584Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7359717Z               "line": 305
2026-06-19T23:28:15.7359847Z             },
2026-06-19T23:28:15.7359965Z             {
2026-06-19T23:28:15.7360140Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-19T23:28:15.7360273Z               "line": 336
2026-06-19T23:28:15.7360395Z             },
2026-06-19T23:28:15.7360520Z             {
2026-06-19T23:28:15.7360691Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7360930Z               "line": 1217
2026-06-19T23:28:15.7361058Z             },
2026-06-19T23:28:15.7361188Z             {
2026-06-19T23:28:15.7361349Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7361483Z               "line": 1163
2026-06-19T23:28:15.7361607Z             }
2026-06-19T23:28:15.7361731Z           ]
2026-06-19T23:28:15.7361851Z         }
2026-06-19T23:28:15.7361969Z       }
2026-06-19T23:28:15.7362090Z     },
2026-06-19T23:28:15.7362208Z     {
2026-06-19T23:28:15.7362341Z       "id": "REQ-RC-1",
2026-06-19T23:28:15.7364413Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-19T23:28:15.7364675Z       "requiredStages": [
2026-06-19T23:28:15.7364802Z         "impl",
2026-06-19T23:28:15.7364932Z         "unit",
2026-06-19T23:28:15.7365052Z         "int"
2026-06-19T23:28:15.7365166Z       ],
2026-06-19T23:28:15.7365291Z       "stages": {
2026-06-19T23:28:15.7365418Z         "doc": {
2026-06-19T23:28:15.7365550Z           "complete": false,
2026-06-19T23:28:15.7365694Z           "evidence": []
2026-06-19T23:28:15.7365822Z         },
2026-06-19T23:28:15.7365951Z         "impl": {
2026-06-19T23:28:15.7366090Z           "complete": true,
2026-06-19T23:28:15.7366223Z           "evidence": [
2026-06-19T23:28:15.7366347Z             {
2026-06-19T23:28:15.7366509Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.7366648Z               "line": 896
2026-06-19T23:28:15.7366775Z             },
2026-06-19T23:28:15.7366901Z             {
2026-06-19T23:28:15.7367072Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.7367201Z               "line": 1746
2026-06-19T23:28:15.7367338Z             },
2026-06-19T23:28:15.7367458Z             {
2026-06-19T23:28:15.7367630Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7367771Z               "line": 967
2026-06-19T23:28:15.7367896Z             },
2026-06-19T23:28:15.7368027Z             {
2026-06-19T23:28:15.7368194Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7368341Z               "line": 1001
2026-06-19T23:28:15.7368466Z             },
2026-06-19T23:28:15.7368595Z             {
2026-06-19T23:28:15.7368755Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7368881Z               "line": 22
2026-06-19T23:28:15.7369095Z             },
2026-06-19T23:28:15.7369219Z             {
2026-06-19T23:28:15.7369366Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7369496Z               "line": 412
2026-06-19T23:28:15.7369624Z             }
2026-06-19T23:28:15.7369749Z           ]
2026-06-19T23:28:15.7369872Z         },
2026-06-19T23:28:15.7370001Z         "int": {
2026-06-19T23:28:15.7370140Z           "complete": true,
2026-06-19T23:28:15.7370268Z           "evidence": [
2026-06-19T23:28:15.7370397Z             {
2026-06-19T23:28:15.7370568Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7370701Z               "line": 258
2026-06-19T23:28:15.7370828Z             },
2026-06-19T23:28:15.7370951Z             {
2026-06-19T23:28:15.7371119Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7371251Z               "line": 285
2026-06-19T23:28:15.7371381Z             },
2026-06-19T23:28:15.7371505Z             {
2026-06-19T23:28:15.7371800Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7371933Z               "line": 413
2026-06-19T23:28:15.7372058Z             }
2026-06-19T23:28:15.7372182Z           ]
2026-06-19T23:28:15.7372310Z         },
2026-06-19T23:28:15.7372439Z         "unit": {
2026-06-19T23:28:15.7372582Z           "complete": true,
2026-06-19T23:28:15.7372716Z           "evidence": [
2026-06-19T23:28:15.7372839Z             {
2026-06-19T23:28:15.7373012Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7373149Z               "line": 1327
2026-06-19T23:28:15.7373282Z             },
2026-06-19T23:28:15.7373414Z             {
2026-06-19T23:28:15.7373656Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7373799Z               "line": 830
2026-06-19T23:28:15.7373913Z             },
2026-06-19T23:28:15.7374038Z             {
2026-06-19T23:28:15.7374185Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7374310Z               "line": 859
2026-06-19T23:28:15.7374438Z             },
2026-06-19T23:28:15.7374563Z             {
2026-06-19T23:28:15.7374714Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7374848Z               "line": 872
2026-06-19T23:28:15.7375001Z             }
2026-06-19T23:28:15.7375115Z           ]
2026-06-19T23:28:15.7375235Z         }
2026-06-19T23:28:15.7375367Z       }
2026-06-19T23:28:15.7375483Z     },
2026-06-19T23:28:15.7375612Z     {
2026-06-19T23:28:15.7375759Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-19T23:28:15.7381650Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-19T23:28:15.7381854Z       "requiredStages": [
2026-06-19T23:28:15.7381974Z         "doc",
2026-06-19T23:28:15.7382102Z         "impl",
2026-06-19T23:28:15.7382227Z         "unit"
2026-06-19T23:28:15.7382346Z       ],
2026-06-19T23:28:15.7382484Z       "stages": {
2026-06-19T23:28:15.7382614Z         "doc": {
2026-06-19T23:28:15.7382751Z           "complete": true,
2026-06-19T23:28:15.7382875Z           "evidence": [
2026-06-19T23:28:15.7383008Z             {
2026-06-19T23:28:15.7383156Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7383286Z               "line": 345
2026-06-19T23:28:15.7383520Z             },
2026-06-19T23:28:15.7383638Z             {
2026-06-19T23:28:15.7383794Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-19T23:28:15.7383927Z               "line": 440
2026-06-19T23:28:15.7384068Z             }
2026-06-19T23:28:15.7384198Z           ]
2026-06-19T23:28:15.7384317Z         },
2026-06-19T23:28:15.7384440Z         "impl": {
2026-06-19T23:28:15.7384570Z           "complete": true,
2026-06-19T23:28:15.7384702Z           "evidence": [
2026-06-19T23:28:15.7384828Z             {
2026-06-19T23:28:15.7384975Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7385118Z               "line": 81
2026-06-19T23:28:15.7385360Z             },
2026-06-19T23:28:15.7385490Z             {
2026-06-19T23:28:15.7385642Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7385772Z               "line": 140
2026-06-19T23:28:15.7385900Z             },
2026-06-19T23:28:15.7386028Z             {
2026-06-19T23:28:15.7386177Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7386314Z               "line": 155
2026-06-19T23:28:15.7386444Z             },
2026-06-19T23:28:15.7386576Z             {
2026-06-19T23:28:15.7386733Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7386867Z               "line": 170
2026-06-19T23:28:15.7386995Z             },
2026-06-19T23:28:15.7387125Z             {
2026-06-19T23:28:15.7387271Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7387416Z               "line": 219
2026-06-19T23:28:15.7387539Z             }
2026-06-19T23:28:15.7387658Z           ]
2026-06-19T23:28:15.7387783Z         },
2026-06-19T23:28:15.7387915Z         "int": {
2026-06-19T23:28:15.7388064Z           "complete": false,
2026-06-19T23:28:15.7388197Z           "evidence": []
2026-06-19T23:28:15.7388327Z         },
2026-06-19T23:28:15.7388454Z         "unit": {
2026-06-19T23:28:15.7388588Z           "complete": true,
2026-06-19T23:28:15.7388718Z           "evidence": [
2026-06-19T23:28:15.7388849Z             {
2026-06-19T23:28:15.7392530Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7392705Z               "line": 887
2026-06-19T23:28:15.7392831Z             },
2026-06-19T23:28:15.7392954Z             {
2026-06-19T23:28:15.7393121Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7393254Z               "line": 1002
2026-06-19T23:28:15.7393387Z             }
2026-06-19T23:28:15.7393517Z           ]
2026-06-19T23:28:15.7393640Z         }
2026-06-19T23:28:15.7393755Z       }
2026-06-19T23:28:15.7393879Z     },
2026-06-19T23:28:15.7394003Z     {
2026-06-19T23:28:15.7394137Z       "id": "REQ-RCVIEW-1",
2026-06-19T23:28:15.7398781Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-19T23:28:15.7399201Z       "requiredStages": [
2026-06-19T23:28:15.7399338Z         "doc",
2026-06-19T23:28:15.7399475Z         "impl",
2026-06-19T23:28:15.7399590Z         "unit",
2026-06-19T23:28:15.7399721Z         "int"
2026-06-19T23:28:15.7399841Z       ],
2026-06-19T23:28:15.7399961Z       "stages": {
2026-06-19T23:28:15.7400093Z         "doc": {
2026-06-19T23:28:15.7400228Z           "complete": true,
2026-06-19T23:28:15.7400365Z           "evidence": [
2026-06-19T23:28:15.7400494Z             {
2026-06-19T23:28:15.7400751Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7400886Z               "line": 342
2026-06-19T23:28:15.7400999Z             }
2026-06-19T23:28:15.7401124Z           ]
2026-06-19T23:28:15.7401247Z         },
2026-06-19T23:28:15.7401371Z         "impl": {
2026-06-19T23:28:15.7401506Z           "complete": true,
2026-06-19T23:28:15.7401643Z           "evidence": [
2026-06-19T23:28:15.7401768Z             {
2026-06-19T23:28:15.7401948Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-19T23:28:15.7402083Z               "line": 345
2026-06-19T23:28:15.7402201Z             },
2026-06-19T23:28:15.7402329Z             {
2026-06-19T23:28:15.7402486Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.7402622Z               "line": 562
2026-06-19T23:28:15.7402741Z             },
2026-06-19T23:28:15.7402871Z             {
2026-06-19T23:28:15.7403037Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.7403166Z               "line": 573
2026-06-19T23:28:15.7403294Z             },
2026-06-19T23:28:15.7403419Z             {
2026-06-19T23:28:15.7403585Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.7403715Z               "line": 41
2026-06-19T23:28:15.7403828Z             },
2026-06-19T23:28:15.7403961Z             {
2026-06-19T23:28:15.7404119Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.7404248Z               "line": 62
2026-06-19T23:28:15.7404368Z             },
2026-06-19T23:28:15.7404495Z             {
2026-06-19T23:28:15.7404659Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.7404791Z               "line": 297
2026-06-19T23:28:15.7404919Z             },
2026-06-19T23:28:15.7405038Z             {
2026-06-19T23:28:15.7405189Z               "path": "crates/spt/src/rc.rs",
2026-06-19T23:28:15.7405318Z               "line": 412
2026-06-19T23:28:15.7405437Z             }
2026-06-19T23:28:15.7405565Z           ]
2026-06-19T23:28:15.7405695Z         },
2026-06-19T23:28:15.7405827Z         "int": {
2026-06-19T23:28:15.7405962Z           "complete": true,
2026-06-19T23:28:15.7406100Z           "evidence": [
2026-06-19T23:28:15.7406229Z             {
2026-06-19T23:28:15.7406414Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7406548Z               "line": 913
2026-06-19T23:28:15.7406672Z             },
2026-06-19T23:28:15.7406805Z             {
2026-06-19T23:28:15.7406972Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7407115Z               "line": 953
2026-06-19T23:28:15.7407241Z             },
2026-06-19T23:28:15.7407363Z             {
2026-06-19T23:28:15.7407536Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7407668Z               "line": 1000
2026-06-19T23:28:15.7407795Z             },
2026-06-19T23:28:15.7407916Z             {
2026-06-19T23:28:15.7408091Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7408216Z               "line": 1112
2026-06-19T23:28:15.7408344Z             }
2026-06-19T23:28:15.7408463Z           ]
2026-06-19T23:28:15.7408583Z         },
2026-06-19T23:28:15.7408711Z         "unit": {
2026-06-19T23:28:15.7408846Z           "complete": true,
2026-06-19T23:28:15.7409069Z           "evidence": [
2026-06-19T23:28:15.7409194Z             {
2026-06-19T23:28:15.7409475Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.7409607Z               "line": 175
2026-06-19T23:28:15.7409732Z             },
2026-06-19T23:28:15.7409856Z             {
2026-06-19T23:28:15.7410017Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-19T23:28:15.7410145Z               "line": 195
2026-06-19T23:28:15.7410272Z             }
2026-06-19T23:28:15.7410391Z           ]
2026-06-19T23:28:15.7410516Z         }
2026-06-19T23:28:15.7410634Z       }
2026-06-19T23:28:15.7410758Z     },
2026-06-19T23:28:15.7410887Z     {
2026-06-19T23:28:15.7411020Z       "id": "REQ-REACH-1",
2026-06-19T23:28:15.7411321Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-19T23:28:15.7411450Z       "requiredStages": [
2026-06-19T23:28:15.7411574Z         "impl",
2026-06-19T23:28:15.7411699Z         "unit",
2026-06-19T23:28:15.7411821Z         "int"
2026-06-19T23:28:15.7411941Z       ],
2026-06-19T23:28:15.7412076Z       "stages": {
2026-06-19T23:28:15.7412194Z         "doc": {
2026-06-19T23:28:15.7412333Z           "complete": false,
2026-06-19T23:28:15.7412475Z           "evidence": []
2026-06-19T23:28:15.7412600Z         },
2026-06-19T23:28:15.7412729Z         "impl": {
2026-06-19T23:28:15.7412855Z           "complete": true,
2026-06-19T23:28:15.7412984Z           "evidence": [
2026-06-19T23:28:15.7413097Z             {
2026-06-19T23:28:15.7413263Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.7413402Z               "line": 562
2026-06-19T23:28:15.7413515Z             },
2026-06-19T23:28:15.7413646Z             {
2026-06-19T23:28:15.7413806Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-19T23:28:15.7413931Z               "line": 76
2026-06-19T23:28:15.7414055Z             },
2026-06-19T23:28:15.7414178Z             {
2026-06-19T23:28:15.7414341Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-19T23:28:15.7414474Z               "line": 222
2026-06-19T23:28:15.7414609Z             },
2026-06-19T23:28:15.7414731Z             {
2026-06-19T23:28:15.7414900Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-19T23:28:15.7415017Z               "line": 422
2026-06-19T23:28:15.7415147Z             },
2026-06-19T23:28:15.7415277Z             {
2026-06-19T23:28:15.7415427Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-19T23:28:15.7415565Z               "line": 529
2026-06-19T23:28:15.7415687Z             },
2026-06-19T23:28:15.7415805Z             {
2026-06-19T23:28:15.7415960Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-19T23:28:15.7416097Z               "line": 39
2026-06-19T23:28:15.7416226Z             },
2026-06-19T23:28:15.7416349Z             {
2026-06-19T23:28:15.7416513Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.7416645Z               "line": 289
2026-06-19T23:28:15.7416769Z             },
2026-06-19T23:28:15.7416889Z             {
2026-06-19T23:28:15.7417055Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-19T23:28:15.7417194Z               "line": 88
2026-06-19T23:28:15.7417318Z             },
2026-06-19T23:28:15.7417442Z             {
2026-06-19T23:28:15.7417594Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-19T23:28:15.7417723Z               "line": 98
2026-06-19T23:28:15.7417852Z             },
2026-06-19T23:28:15.7417961Z             {
2026-06-19T23:28:15.7418139Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7418266Z               "line": 229
2026-06-19T23:28:15.7418385Z             }
2026-06-19T23:28:15.7418500Z           ]
2026-06-19T23:28:15.7418628Z         },
2026-06-19T23:28:15.7418757Z         "int": {
2026-06-19T23:28:15.7418900Z           "complete": true,
2026-06-19T23:28:15.7419115Z           "evidence": [
2026-06-19T23:28:15.7419238Z             {
2026-06-19T23:28:15.7419415Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7419544Z               "line": 415
2026-06-19T23:28:15.7419768Z             },
2026-06-19T23:28:15.7419891Z             {
2026-06-19T23:28:15.7420064Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7420201Z               "line": 520
2026-06-19T23:28:15.7420316Z             },
2026-06-19T23:28:15.7420440Z             {
2026-06-19T23:28:15.7420610Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7420739Z               "line": 998
2026-06-19T23:28:15.7420865Z             },
2026-06-19T23:28:15.7420990Z             {
2026-06-19T23:28:15.7421157Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7421290Z               "line": 1383
2026-06-19T23:28:15.7421518Z             }
2026-06-19T23:28:15.7421639Z           ]
2026-06-19T23:28:15.7421767Z         },
2026-06-19T23:28:15.7421896Z         "unit": {
2026-06-19T23:28:15.7422030Z           "complete": true,
2026-06-19T23:28:15.7422157Z           "evidence": [
2026-06-19T23:28:15.7422282Z             {
2026-06-19T23:28:15.7422449Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-19T23:28:15.7422579Z               "line": 639
2026-06-19T23:28:15.7422697Z             },
2026-06-19T23:28:15.7422820Z             {
2026-06-19T23:28:15.7422974Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-19T23:28:15.7423111Z               "line": 660
2026-06-19T23:28:15.7423223Z             },
2026-06-19T23:28:15.7423354Z             {
2026-06-19T23:28:15.7423520Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-19T23:28:15.7423643Z               "line": 768
2026-06-19T23:28:15.7423766Z             },
2026-06-19T23:28:15.7423890Z             {
2026-06-19T23:28:15.7424061Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-19T23:28:15.7424186Z               "line": 93
2026-06-19T23:28:15.7424315Z             },
2026-06-19T23:28:15.7424438Z             {
2026-06-19T23:28:15.7424600Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-19T23:28:15.7424733Z               "line": 224
2026-06-19T23:28:15.7424859Z             },
2026-06-19T23:28:15.7424987Z             {
2026-06-19T23:28:15.7425140Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-19T23:28:15.7425272Z               "line": 96
2026-06-19T23:28:15.7425392Z             },
2026-06-19T23:28:15.7425517Z             {
2026-06-19T23:28:15.7425688Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-19T23:28:15.7425808Z               "line": 146
2026-06-19T23:28:15.7425935Z             },
2026-06-19T23:28:15.7426063Z             {
2026-06-19T23:28:15.7426224Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.7426356Z               "line": 672
2026-06-19T23:28:15.7426486Z             },
2026-06-19T23:28:15.7426614Z             {
2026-06-19T23:28:15.7426763Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-19T23:28:15.7426896Z               "line": 118
2026-06-19T23:28:15.7427019Z             },
2026-06-19T23:28:15.7427143Z             {
2026-06-19T23:28:15.7427300Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-19T23:28:15.7427440Z               "line": 148
2026-06-19T23:28:15.7427558Z             },
2026-06-19T23:28:15.7427683Z             {
2026-06-19T23:28:15.7427859Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7427988Z               "line": 924
2026-06-19T23:28:15.7428116Z             }
2026-06-19T23:28:15.7428245Z           ]
2026-06-19T23:28:15.7428366Z         }
2026-06-19T23:28:15.7428492Z       }
2026-06-19T23:28:15.7428613Z     },
2026-06-19T23:28:15.7428741Z     {
2026-06-19T23:28:15.7428878Z       "id": "REQ-REACH-2",
2026-06-19T23:28:15.7429164Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-19T23:28:15.7429307Z       "requiredStages": [],
2026-06-19T23:28:15.7429432Z       "stages": {
2026-06-19T23:28:15.7429559Z         "doc": {
2026-06-19T23:28:15.7429694Z           "complete": false,
2026-06-19T23:28:15.7429822Z           "evidence": []
2026-06-19T23:28:15.7429942Z         },
2026-06-19T23:28:15.7430193Z         "impl": {
2026-06-19T23:28:15.7430323Z           "complete": false,
2026-06-19T23:28:15.7430451Z           "evidence": []
2026-06-19T23:28:15.7430572Z         },
2026-06-19T23:28:15.7430695Z         "int": {
2026-06-19T23:28:15.7430828Z           "complete": false,
2026-06-19T23:28:15.7430953Z           "evidence": []
2026-06-19T23:28:15.7431080Z         },
2026-06-19T23:28:15.7431199Z         "unit": {
2026-06-19T23:28:15.7431331Z           "complete": false,
2026-06-19T23:28:15.7431468Z           "evidence": []
2026-06-19T23:28:15.7431588Z         }
2026-06-19T23:28:15.7431717Z       }
2026-06-19T23:28:15.7431835Z     },
2026-06-19T23:28:15.7432060Z     {
2026-06-19T23:28:15.7432213Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-19T23:28:15.7435748Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-19T23:28:15.7435933Z       "requiredStages": [
2026-06-19T23:28:15.7436068Z         "doc",
2026-06-19T23:28:15.7436195Z         "impl",
2026-06-19T23:28:15.7436321Z         "unit",
2026-06-19T23:28:15.7436449Z         "int"
2026-06-19T23:28:15.7436571Z       ],
2026-06-19T23:28:15.7436704Z       "stages": {
2026-06-19T23:28:15.7436826Z         "doc": {
2026-06-19T23:28:15.7436960Z           "complete": true,
2026-06-19T23:28:15.7437090Z           "evidence": [
2026-06-19T23:28:15.7437207Z             {
2026-06-19T23:28:15.7437352Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7437484Z               "line": 372
2026-06-19T23:28:15.7437618Z             }
2026-06-19T23:28:15.7437742Z           ]
2026-06-19T23:28:15.7437865Z         },
2026-06-19T23:28:15.7438000Z         "impl": {
2026-06-19T23:28:15.7438132Z           "complete": true,
2026-06-19T23:28:15.7438262Z           "evidence": [
2026-06-19T23:28:15.7438375Z             {
2026-06-19T23:28:15.7438543Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7438672Z               "line": 110
2026-06-19T23:28:15.7438805Z             }
2026-06-19T23:28:15.7438926Z           ]
2026-06-19T23:28:15.7439129Z         },
2026-06-19T23:28:15.7439259Z         "int": {
2026-06-19T23:28:15.7439390Z           "complete": true,
2026-06-19T23:28:15.7439519Z           "evidence": [
2026-06-19T23:28:15.7439640Z             {
2026-06-19T23:28:15.7439834Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-19T23:28:15.7439963Z               "line": 26
2026-06-19T23:28:15.7440082Z             }
2026-06-19T23:28:15.7440212Z           ]
2026-06-19T23:28:15.7440321Z         },
2026-06-19T23:28:15.7440449Z         "unit": {
2026-06-19T23:28:15.7440578Z           "complete": true,
2026-06-19T23:28:15.7440716Z           "evidence": [
2026-06-19T23:28:15.7440846Z             {
2026-06-19T23:28:15.7441007Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-19T23:28:15.7441127Z               "line": 318
2026-06-19T23:28:15.7441245Z             }
2026-06-19T23:28:15.7441374Z           ]
2026-06-19T23:28:15.7441607Z         }
2026-06-19T23:28:15.7441730Z       }
2026-06-19T23:28:15.7441854Z     },
2026-06-19T23:28:15.7441981Z     {
2026-06-19T23:28:15.7442125Z       "id": "REQ-REL-1",
2026-06-19T23:28:15.7442544Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-19T23:28:15.7442676Z       "requiredStages": [
2026-06-19T23:28:15.7442797Z         "doc",
2026-06-19T23:28:15.7442925Z         "impl"
2026-06-19T23:28:15.7443045Z       ],
2026-06-19T23:28:15.7443169Z       "stages": {
2026-06-19T23:28:15.7443297Z         "doc": {
2026-06-19T23:28:15.7443426Z           "complete": true,
2026-06-19T23:28:15.7443655Z           "evidence": [
2026-06-19T23:28:15.7443779Z             {
2026-06-19T23:28:15.7444047Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-19T23:28:15.7444179Z               "line": 3
2026-06-19T23:28:15.7444299Z             }
2026-06-19T23:28:15.7444432Z           ]
2026-06-19T23:28:15.7444555Z         },
2026-06-19T23:28:15.7444684Z         "impl": {
2026-06-19T23:28:15.7444820Z           "complete": true,
2026-06-19T23:28:15.7444948Z           "evidence": [
2026-06-19T23:28:15.7445073Z             {
2026-06-19T23:28:15.7445249Z               "path": ".github/workflows/docs-publish.yml",
2026-06-19T23:28:15.7445378Z               "line": 11
2026-06-19T23:28:15.7445501Z             },
2026-06-19T23:28:15.7445626Z             {
2026-06-19T23:28:15.7445788Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7445926Z               "line": 265
2026-06-19T23:28:15.7446055Z             }
2026-06-19T23:28:15.7446183Z           ]
2026-06-19T23:28:15.7446303Z         },
2026-06-19T23:28:15.7446416Z         "int": {
2026-06-19T23:28:15.7446561Z           "complete": false,
2026-06-19T23:28:15.7446689Z           "evidence": []
2026-06-19T23:28:15.7446817Z         },
2026-06-19T23:28:15.7446943Z         "unit": {
2026-06-19T23:28:15.7447074Z           "complete": false,
2026-06-19T23:28:15.7447207Z           "evidence": []
2026-06-19T23:28:15.7447330Z         }
2026-06-19T23:28:15.7447462Z       }
2026-06-19T23:28:15.7447587Z     },
2026-06-19T23:28:15.7447706Z     {
2026-06-19T23:28:15.7447834Z       "id": "REQ-REL-2",
2026-06-19T23:28:15.7448378Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-19T23:28:15.7448522Z       "requiredStages": [
2026-06-19T23:28:15.7448645Z         "impl",
2026-06-19T23:28:15.7448774Z         "int"
2026-06-19T23:28:15.7448908Z       ],
2026-06-19T23:28:15.7449108Z       "stages": {
2026-06-19T23:28:15.7449232Z         "doc": {
2026-06-19T23:28:15.7449365Z           "complete": true,
2026-06-19T23:28:15.7449490Z           "evidence": [
2026-06-19T23:28:15.7449612Z             {
2026-06-19T23:28:15.7449767Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-19T23:28:15.7449899Z               "line": 6
2026-06-19T23:28:15.7450031Z             }
2026-06-19T23:28:15.7450152Z           ]
2026-06-19T23:28:15.7450270Z         },
2026-06-19T23:28:15.7450404Z         "impl": {
2026-06-19T23:28:15.7450533Z           "complete": true,
2026-06-19T23:28:15.7450656Z           "evidence": [
2026-06-19T23:28:15.7450781Z             {
2026-06-19T23:28:15.7450947Z               "path": ".github/workflows/release.yml",
2026-06-19T23:28:15.7451077Z               "line": 16
2026-06-19T23:28:15.7451195Z             },
2026-06-19T23:28:15.7451314Z             {
2026-06-19T23:28:15.7451472Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7451600Z               "line": 352
2026-06-19T23:28:15.7451730Z             },
2026-06-19T23:28:15.7451853Z             {
2026-06-19T23:28:15.7452002Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7452134Z               "line": 426
2026-06-19T23:28:15.7452262Z             },
2026-06-19T23:28:15.7452489Z             {
2026-06-19T23:28:15.7452646Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7452780Z               "line": 588
2026-06-19T23:28:15.7452907Z             },
2026-06-19T23:28:15.7453028Z             {
2026-06-19T23:28:15.7453180Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7453315Z               "line": 720
2026-06-19T23:28:15.7453429Z             }
2026-06-19T23:28:15.7453556Z           ]
2026-06-19T23:28:15.7453686Z         },
2026-06-19T23:28:15.7453809Z         "int": {
2026-06-19T23:28:15.7453939Z           "complete": true,
2026-06-19T23:28:15.7454067Z           "evidence": [
2026-06-19T23:28:15.7454297Z             {
2026-06-19T23:28:15.7454482Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-19T23:28:15.7454612Z               "line": 13
2026-06-19T23:28:15.7454725Z             }
2026-06-19T23:28:15.7454835Z           ]
2026-06-19T23:28:15.7454955Z         },
2026-06-19T23:28:15.7455082Z         "unit": {
2026-06-19T23:28:15.7455230Z           "complete": false,
2026-06-19T23:28:15.7455361Z           "evidence": []
2026-06-19T23:28:15.7455484Z         }
2026-06-19T23:28:15.7455614Z       }
2026-06-19T23:28:15.7455737Z     },
2026-06-19T23:28:15.7455862Z     {
2026-06-19T23:28:15.7455995Z       "id": "REQ-REL-3",
2026-06-19T23:28:15.7456496Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-19T23:28:15.7456634Z       "requiredStages": [
2026-06-19T23:28:15.7456767Z         "impl",
2026-06-19T23:28:15.7456897Z         "unit"
2026-06-19T23:28:15.7457025Z       ],
2026-06-19T23:28:15.7457150Z       "stages": {
2026-06-19T23:28:15.7457282Z         "doc": {
2026-06-19T23:28:15.7457421Z           "complete": false,
2026-06-19T23:28:15.7457555Z           "evidence": []
2026-06-19T23:28:15.7457682Z         },
2026-06-19T23:28:15.7457815Z         "impl": {
2026-06-19T23:28:15.7457947Z           "complete": true,
2026-06-19T23:28:15.7458085Z           "evidence": [
2026-06-19T23:28:15.7458210Z             {
2026-06-19T23:28:15.7458385Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.7458514Z               "line": 237
2026-06-19T23:28:15.7458642Z             },
2026-06-19T23:28:15.7458772Z             {
2026-06-19T23:28:15.7459000Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.7459139Z               "line": 289
2026-06-19T23:28:15.7459267Z             },
2026-06-19T23:28:15.7459392Z             {
2026-06-19T23:28:15.7459549Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7459693Z               "line": 329
2026-06-19T23:28:15.7459811Z             },
2026-06-19T23:28:15.7459930Z             {
2026-06-19T23:28:15.7460088Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7460212Z               "line": 353
2026-06-19T23:28:15.7460341Z             },
2026-06-19T23:28:15.7460469Z             {
2026-06-19T23:28:15.7460620Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.7460745Z               "line": 394
2026-06-19T23:28:15.7460863Z             }
2026-06-19T23:28:15.7460983Z           ]
2026-06-19T23:28:15.7461103Z         },
2026-06-19T23:28:15.7461221Z         "int": {
2026-06-19T23:28:15.7461360Z           "complete": false,
2026-06-19T23:28:15.7461497Z           "evidence": []
2026-06-19T23:28:15.7461618Z         },
2026-06-19T23:28:15.7461745Z         "unit": {
2026-06-19T23:28:15.7461874Z           "complete": true,
2026-06-19T23:28:15.7462004Z           "evidence": [
2026-06-19T23:28:15.7462127Z             {
2026-06-19T23:28:15.7462300Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.7462432Z               "line": 1045
2026-06-19T23:28:15.7462562Z             },
2026-06-19T23:28:15.7462685Z             {
2026-06-19T23:28:15.7462850Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.7462984Z               "line": 1104
2026-06-19T23:28:15.7463202Z             }
2026-06-19T23:28:15.7463327Z           ]
2026-06-19T23:28:15.7463454Z         }
2026-06-19T23:28:15.7463584Z       }
2026-06-19T23:28:15.7463702Z     },
2026-06-19T23:28:15.7463831Z     {
2026-06-19T23:28:15.7463960Z       "id": "REQ-RUN-PICKER",
2026-06-19T23:28:15.7468821Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-19T23:28:15.7469211Z       "requiredStages": [
2026-06-19T23:28:15.7469327Z         "doc",
2026-06-19T23:28:15.7469451Z         "impl",
2026-06-19T23:28:15.7469584Z         "unit"
2026-06-19T23:28:15.7469718Z       ],
2026-06-19T23:28:15.7469841Z       "stages": {
2026-06-19T23:28:15.7469976Z         "doc": {
2026-06-19T23:28:15.7470109Z           "complete": true,
2026-06-19T23:28:15.7470238Z           "evidence": [
2026-06-19T23:28:15.7470361Z             {
2026-06-19T23:28:15.7470529Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7470676Z               "line": 349
2026-06-19T23:28:15.7470800Z             }
2026-06-19T23:28:15.7470920Z           ]
2026-06-19T23:28:15.7471047Z         },
2026-06-19T23:28:15.7471175Z         "impl": {
2026-06-19T23:28:15.7471315Z           "complete": true,
2026-06-19T23:28:15.7471447Z           "evidence": [
2026-06-19T23:28:15.7471567Z             {
2026-06-19T23:28:15.7471729Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7471858Z               "line": 958
2026-06-19T23:28:15.7471987Z             },
2026-06-19T23:28:15.7472100Z             {
2026-06-19T23:28:15.7472254Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7472382Z               "line": 968
2026-06-19T23:28:15.7472507Z             },
2026-06-19T23:28:15.7472634Z             {
2026-06-19T23:28:15.7472808Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7472935Z               "line": 9
2026-06-19T23:28:15.7473059Z             },
2026-06-19T23:28:15.7473185Z             {
2026-06-19T23:28:15.7473344Z               "path": "crates/spt/src/picker/data.rs",
2026-06-19T23:28:15.7473482Z               "line": 67
2026-06-19T23:28:15.7473604Z             },
2026-06-19T23:28:15.7473727Z             {
2026-06-19T23:28:15.7473901Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-19T23:28:15.7474028Z               "line": 16
2026-06-19T23:28:15.7474153Z             },
2026-06-19T23:28:15.7474276Z             {
2026-06-19T23:28:15.7474444Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-19T23:28:15.7474582Z               "line": 254
2026-06-19T23:28:15.7474825Z             },
2026-06-19T23:28:15.7474958Z             {
2026-06-19T23:28:15.7475121Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7475254Z               "line": 11
2026-06-19T23:28:15.7475379Z             },
2026-06-19T23:28:15.7475506Z             {
2026-06-19T23:28:15.7475675Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7475802Z               "line": 115
2026-06-19T23:28:15.7475931Z             },
2026-06-19T23:28:15.7476057Z             {
2026-06-19T23:28:15.7476221Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7476350Z               "line": 526
2026-06-19T23:28:15.7476571Z             },
2026-06-19T23:28:15.7476701Z             {
2026-06-19T23:28:15.7476867Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7476997Z               "line": 607
2026-06-19T23:28:15.7477120Z             },
2026-06-19T23:28:15.7477238Z             {
2026-06-19T23:28:15.7477406Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7477539Z               "line": 666
2026-06-19T23:28:15.7477669Z             },
2026-06-19T23:28:15.7477792Z             {
2026-06-19T23:28:15.7477956Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7478083Z               "line": 718
2026-06-19T23:28:15.7478202Z             },
2026-06-19T23:28:15.7478322Z             {
2026-06-19T23:28:15.7478489Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7478618Z               "line": 755
2026-06-19T23:28:15.7478741Z             },
2026-06-19T23:28:15.7478868Z             {
2026-06-19T23:28:15.7479109Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7479244Z               "line": 8
2026-06-19T23:28:15.7479367Z             }
2026-06-19T23:28:15.7479496Z           ]
2026-06-19T23:28:15.7479625Z         },
2026-06-19T23:28:15.7479753Z         "int": {
2026-06-19T23:28:15.7479883Z           "complete": false,
2026-06-19T23:28:15.7480016Z           "evidence": []
2026-06-19T23:28:15.7480140Z         },
2026-06-19T23:28:15.7480264Z         "unit": {
2026-06-19T23:28:15.7480406Z           "complete": true,
2026-06-19T23:28:15.7480546Z           "evidence": [
2026-06-19T23:28:15.7480664Z             {
2026-06-19T23:28:15.7480813Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7480941Z               "line": 7610
2026-06-19T23:28:15.7481069Z             },
2026-06-19T23:28:15.7481185Z             {
2026-06-19T23:28:15.7481337Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7481472Z               "line": 7621
2026-06-19T23:28:15.7481593Z             },
2026-06-19T23:28:15.7481731Z             {
2026-06-19T23:28:15.7481894Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7482021Z               "line": 842
2026-06-19T23:28:15.7482142Z             },
2026-06-19T23:28:15.7482261Z             {
2026-06-19T23:28:15.7482433Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7482566Z               "line": 891
2026-06-19T23:28:15.7482699Z             },
2026-06-19T23:28:15.7482819Z             {
2026-06-19T23:28:15.7482990Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7483119Z               "line": 908
2026-06-19T23:28:15.7483238Z             },
2026-06-19T23:28:15.7483368Z             {
2026-06-19T23:28:15.7483519Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7483658Z               "line": 928
2026-06-19T23:28:15.7483777Z             },
2026-06-19T23:28:15.7483909Z             {
2026-06-19T23:28:15.7484062Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7484193Z               "line": 945
2026-06-19T23:28:15.7484327Z             },
2026-06-19T23:28:15.7484452Z             {
2026-06-19T23:28:15.7484617Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7484746Z               "line": 954
2026-06-19T23:28:15.7484869Z             },
2026-06-19T23:28:15.7485109Z             {
2026-06-19T23:28:15.7485266Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7485404Z               "line": 965
2026-06-19T23:28:15.7485532Z             },
2026-06-19T23:28:15.7485658Z             {
2026-06-19T23:28:15.7485809Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7485939Z               "line": 987
2026-06-19T23:28:15.7486071Z             },
2026-06-19T23:28:15.7486191Z             {
2026-06-19T23:28:15.7486358Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7486491Z               "line": 1006
2026-06-19T23:28:15.7486621Z             },
2026-06-19T23:28:15.7486857Z             {
2026-06-19T23:28:15.7487027Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7487169Z               "line": 1055
2026-06-19T23:28:15.7487289Z             },
2026-06-19T23:28:15.7487412Z             {
2026-06-19T23:28:15.7487571Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7487704Z               "line": 1084
2026-06-19T23:28:15.7487828Z             },
2026-06-19T23:28:15.7487947Z             {
2026-06-19T23:28:15.7488113Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7488243Z               "line": 1097
2026-06-19T23:28:15.7488366Z             },
2026-06-19T23:28:15.7488486Z             {
2026-06-19T23:28:15.7488652Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7488777Z               "line": 1161
2026-06-19T23:28:15.7488906Z             },
2026-06-19T23:28:15.7489112Z             {
2026-06-19T23:28:15.7489267Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7489419Z               "line": 1199
2026-06-19T23:28:15.7489542Z             },
2026-06-19T23:28:15.7489670Z             {
2026-06-19T23:28:15.7489832Z               "path": "crates/spt/src/picker/model.rs",
2026-06-19T23:28:15.7489961Z               "line": 1215
2026-06-19T23:28:15.7490084Z             },
2026-06-19T23:28:15.7490209Z             {
2026-06-19T23:28:15.7490375Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7490500Z               "line": 491
2026-06-19T23:28:15.7490623Z             },
2026-06-19T23:28:15.7490744Z             {
2026-06-19T23:28:15.7490910Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7491038Z               "line": 506
2026-06-19T23:28:15.7491158Z             },
2026-06-19T23:28:15.7491291Z             {
2026-06-19T23:28:15.7491439Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7491568Z               "line": 524
2026-06-19T23:28:15.7491693Z             },
2026-06-19T23:28:15.7491815Z             {
2026-06-19T23:28:15.7491964Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7492083Z               "line": 546
2026-06-19T23:28:15.7492206Z             },
2026-06-19T23:28:15.7492329Z             {
2026-06-19T23:28:15.7492487Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7492625Z               "line": 556
2026-06-19T23:28:15.7492754Z             },
2026-06-19T23:28:15.7492877Z             {
2026-06-19T23:28:15.7493036Z               "path": "crates/spt/src/picker/view.rs",
2026-06-19T23:28:15.7493173Z               "line": 581
2026-06-19T23:28:15.7493298Z             }
2026-06-19T23:28:15.7493426Z           ]
2026-06-19T23:28:15.7493550Z         }
2026-06-19T23:28:15.7493675Z       }
2026-06-19T23:28:15.7493803Z     },
2026-06-19T23:28:15.7493928Z     {
2026-06-19T23:28:15.7494074Z       "id": "REQ-RUN-SHORTCUT",
2026-06-19T23:28:15.7498845Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-19T23:28:15.7499304Z       "requiredStages": [
2026-06-19T23:28:15.7499429Z         "doc",
2026-06-19T23:28:15.7499561Z         "impl",
2026-06-19T23:28:15.7499681Z         "unit"
2026-06-19T23:28:15.7499809Z       ],
2026-06-19T23:28:15.7499945Z       "stages": {
2026-06-19T23:28:15.7500061Z         "doc": {
2026-06-19T23:28:15.7500201Z           "complete": true,
2026-06-19T23:28:15.7503820Z           "evidence": [
2026-06-19T23:28:15.7503986Z             {
2026-06-19T23:28:15.7504153Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7504296Z               "line": 390
2026-06-19T23:28:15.7504420Z             }
2026-06-19T23:28:15.7504545Z           ]
2026-06-19T23:28:15.7504672Z         },
2026-06-19T23:28:15.7504802Z         "impl": {
2026-06-19T23:28:15.7504944Z           "complete": true,
2026-06-19T23:28:15.7505077Z           "evidence": [
2026-06-19T23:28:15.7505210Z             {
2026-06-19T23:28:15.7505394Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7505524Z               "line": 39
2026-06-19T23:28:15.7505652Z             },
2026-06-19T23:28:15.7505781Z             {
2026-06-19T23:28:15.7505966Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7506086Z               "line": 79
2026-06-19T23:28:15.7506214Z             },
2026-06-19T23:28:15.7506342Z             {
2026-06-19T23:28:15.7506515Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7506647Z               "line": 162
2026-06-19T23:28:15.7506778Z             }
2026-06-19T23:28:15.7506915Z           ]
2026-06-19T23:28:15.7507040Z         },
2026-06-19T23:28:15.7507168Z         "int": {
2026-06-19T23:28:15.7507311Z           "complete": false,
2026-06-19T23:28:15.7507446Z           "evidence": []
2026-06-19T23:28:15.7507569Z         },
2026-06-19T23:28:15.7507694Z         "unit": {
2026-06-19T23:28:15.7507835Z           "complete": true,
2026-06-19T23:28:15.7507958Z           "evidence": [
2026-06-19T23:28:15.7508092Z             {
2026-06-19T23:28:15.7508275Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7508410Z               "line": 206
2026-06-19T23:28:15.7508537Z             },
2026-06-19T23:28:15.7508662Z             {
2026-06-19T23:28:15.7508829Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7509058Z               "line": 222
2026-06-19T23:28:15.7509181Z             },
2026-06-19T23:28:15.7509301Z             {
2026-06-19T23:28:15.7509473Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7509636Z               "line": 238
2026-06-19T23:28:15.7509763Z             },
2026-06-19T23:28:15.7509887Z             {
2026-06-19T23:28:15.7510050Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7510183Z               "line": 251
2026-06-19T23:28:15.7510454Z             },
2026-06-19T23:28:15.7510578Z             {
2026-06-19T23:28:15.7510747Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-19T23:28:15.7510876Z               "line": 258
2026-06-19T23:28:15.7511001Z             }
2026-06-19T23:28:15.7511123Z           ]
2026-06-19T23:28:15.7511249Z         }
2026-06-19T23:28:15.7511377Z       }
2026-06-19T23:28:15.7511495Z     },
2026-06-19T23:28:15.7511615Z     {
2026-06-19T23:28:15.7511762Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-19T23:28:15.7511991Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-19T23:28:15.7512120Z       "requiredStages": [
2026-06-19T23:28:15.7512345Z         "impl",
2026-06-19T23:28:15.7512479Z         "unit"
2026-06-19T23:28:15.7512602Z       ],
2026-06-19T23:28:15.7512726Z       "stages": {
2026-06-19T23:28:15.7512842Z         "doc": {
2026-06-19T23:28:15.7512983Z           "complete": false,
2026-06-19T23:28:15.7513118Z           "evidence": []
2026-06-19T23:28:15.7513245Z         },
2026-06-19T23:28:15.7513373Z         "impl": {
2026-06-19T23:28:15.7513502Z           "complete": true,
2026-06-19T23:28:15.7513640Z           "evidence": [
2026-06-19T23:28:15.7513769Z             {
2026-06-19T23:28:15.7513931Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7514070Z               "line": 18
2026-06-19T23:28:15.7514184Z             },
2026-06-19T23:28:15.7514312Z             {
2026-06-19T23:28:15.7514475Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7514603Z               "line": 35
2026-06-19T23:28:15.7514723Z             },
2026-06-19T23:28:15.7514856Z             {
2026-06-19T23:28:15.7515024Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7515157Z               "line": 72
2026-06-19T23:28:15.7515285Z             }
2026-06-19T23:28:15.7515411Z           ]
2026-06-19T23:28:15.7515538Z         },
2026-06-19T23:28:15.7515661Z         "int": {
2026-06-19T23:28:15.7515798Z           "complete": false,
2026-06-19T23:28:15.7515925Z           "evidence": []
2026-06-19T23:28:15.7516059Z         },
2026-06-19T23:28:15.7516179Z         "unit": {
2026-06-19T23:28:15.7516316Z           "complete": true,
2026-06-19T23:28:15.7516455Z           "evidence": [
2026-06-19T23:28:15.7516569Z             {
2026-06-19T23:28:15.7516732Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7516870Z               "line": 239
2026-06-19T23:28:15.7516995Z             },
2026-06-19T23:28:15.7517118Z             {
2026-06-19T23:28:15.7517285Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7517404Z               "line": 256
2026-06-19T23:28:15.7517532Z             },
2026-06-19T23:28:15.7517662Z             {
2026-06-19T23:28:15.7517819Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7517958Z               "line": 265
2026-06-19T23:28:15.7518081Z             }
2026-06-19T23:28:15.7518201Z           ]
2026-06-19T23:28:15.7518321Z         }
2026-06-19T23:28:15.7518447Z       }
2026-06-19T23:28:15.7518571Z     },
2026-06-19T23:28:15.7518694Z     {
2026-06-19T23:28:15.7518850Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-19T23:28:15.7519140Z       "title": "Hostable endpoint-types capability declaration",
2026-06-19T23:28:15.7519271Z       "requiredStages": [
2026-06-19T23:28:15.7519398Z         "impl",
2026-06-19T23:28:15.7519518Z         "unit"
2026-06-19T23:28:15.7519637Z       ],
2026-06-19T23:28:15.7519765Z       "stages": {
2026-06-19T23:28:15.7519890Z         "doc": {
2026-06-19T23:28:15.7520028Z           "complete": false,
2026-06-19T23:28:15.7520157Z           "evidence": []
2026-06-19T23:28:15.7520290Z         },
2026-06-19T23:28:15.7520404Z         "impl": {
2026-06-19T23:28:15.7520544Z           "complete": true,
2026-06-19T23:28:15.7520676Z           "evidence": [
2026-06-19T23:28:15.7520802Z             {
2026-06-19T23:28:15.7520976Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7521094Z               "line": 594
2026-06-19T23:28:15.7521326Z             }
2026-06-19T23:28:15.7521451Z           ]
2026-06-19T23:28:15.7521571Z         },
2026-06-19T23:28:15.7521693Z         "int": {
2026-06-19T23:28:15.7521823Z           "complete": false,
2026-06-19T23:28:15.7521951Z           "evidence": []
2026-06-19T23:28:15.7522070Z         },
2026-06-19T23:28:15.7522199Z         "unit": {
2026-06-19T23:28:15.7522337Z           "complete": true,
2026-06-19T23:28:15.7522457Z           "evidence": [
2026-06-19T23:28:15.7522581Z             {
2026-06-19T23:28:15.7522753Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7522886Z               "line": 963
2026-06-19T23:28:15.7523106Z             }
2026-06-19T23:28:15.7523234Z           ]
2026-06-19T23:28:15.7523359Z         }
2026-06-19T23:28:15.7523477Z       }
2026-06-19T23:28:15.7523596Z     },
2026-06-19T23:28:15.7523716Z     {
2026-06-19T23:28:15.7523857Z       "id": "REQ-SEAM-HISTORY",
2026-06-19T23:28:15.7524091Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-19T23:28:15.7524238Z       "requiredStages": [
2026-06-19T23:28:15.7524363Z         "impl",
2026-06-19T23:28:15.7524491Z         "unit",
2026-06-19T23:28:15.7524615Z         "int"
2026-06-19T23:28:15.7524744Z       ],
2026-06-19T23:28:15.7524872Z       "stages": {
2026-06-19T23:28:15.7524998Z         "doc": {
2026-06-19T23:28:15.7525131Z           "complete": false,
2026-06-19T23:28:15.7525249Z           "evidence": []
2026-06-19T23:28:15.7525369Z         },
2026-06-19T23:28:15.7525492Z         "impl": {
2026-06-19T23:28:15.7525623Z           "complete": true,
2026-06-19T23:28:15.7525754Z           "evidence": [
2026-06-19T23:28:15.7525879Z             {
2026-06-19T23:28:15.7526045Z               "path": "crates/spt-live/src/echo.rs",
2026-06-19T23:28:15.7526164Z               "line": 24
2026-06-19T23:28:15.7526293Z             },
2026-06-19T23:28:15.7526419Z             {
2026-06-19T23:28:15.7526586Z               "path": "crates/spt-live/src/history.rs",
2026-06-19T23:28:15.7526729Z               "line": 22
2026-06-19T23:28:15.7526858Z             }
2026-06-19T23:28:15.7526992Z           ]
2026-06-19T23:28:15.7527110Z         },
2026-06-19T23:28:15.7527236Z         "int": {
2026-06-19T23:28:15.7527363Z           "complete": true,
2026-06-19T23:28:15.7527497Z           "evidence": [
2026-06-19T23:28:15.7527621Z             {
2026-06-19T23:28:15.7527778Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.7527903Z               "line": 260
2026-06-19T23:28:15.7528026Z             }
2026-06-19T23:28:15.7528155Z           ]
2026-06-19T23:28:15.7528283Z         },
2026-06-19T23:28:15.7528412Z         "unit": {
2026-06-19T23:28:15.7528542Z           "complete": true,
2026-06-19T23:28:15.7528674Z           "evidence": [
2026-06-19T23:28:15.7528799Z             {
2026-06-19T23:28:15.7529031Z               "path": "crates/spt-live/src/echo.rs",
2026-06-19T23:28:15.7529169Z               "line": 171
2026-06-19T23:28:15.7529286Z             },
2026-06-19T23:28:15.7529424Z             {
2026-06-19T23:28:15.7529573Z               "path": "crates/spt-live/src/echo.rs",
2026-06-19T23:28:15.7529700Z               "line": 200
2026-06-19T23:28:15.7529826Z             },
2026-06-19T23:28:15.7529944Z             {
2026-06-19T23:28:15.7530107Z               "path": "crates/spt-live/src/echo.rs",
2026-06-19T23:28:15.7530236Z               "line": 220
2026-06-19T23:28:15.7530354Z             },
2026-06-19T23:28:15.7530479Z             {
2026-06-19T23:28:15.7530645Z               "path": "crates/spt-live/src/history.rs",
2026-06-19T23:28:15.7530770Z               "line": 199
2026-06-19T23:28:15.7530892Z             },
2026-06-19T23:28:15.7531013Z             {
2026-06-19T23:28:15.7531170Z               "path": "crates/spt-live/src/history.rs",
2026-06-19T23:28:15.7531303Z               "line": 219
2026-06-19T23:28:15.7531424Z             },
2026-06-19T23:28:15.7531546Z             {
2026-06-19T23:28:15.7531703Z               "path": "crates/spt-live/src/history.rs",
2026-06-19T23:28:15.7531948Z               "line": 244
2026-06-19T23:28:15.7532078Z             },
2026-06-19T23:28:15.7532206Z             {
2026-06-19T23:28:15.7532369Z               "path": "crates/spt-live/src/history.rs",
2026-06-19T23:28:15.7532502Z               "line": 276
2026-06-19T23:28:15.7532620Z             },
2026-06-19T23:28:15.7532750Z             {
2026-06-19T23:28:15.7532911Z               "path": "crates/spt-live/src/history.rs",
2026-06-19T23:28:15.7533036Z               "line": 297
2026-06-19T23:28:15.7533155Z             },
2026-06-19T23:28:15.7533269Z             {
2026-06-19T23:28:15.7533431Z               "path": "crates/spt-live/src/history.rs",
2026-06-19T23:28:15.7533666Z               "line": 324
2026-06-19T23:28:15.7533799Z             }
2026-06-19T23:28:15.7533919Z           ]
2026-06-19T23:28:15.7534042Z         }
2026-06-19T23:28:15.7534175Z       }
2026-06-19T23:28:15.7534296Z     },
2026-06-19T23:28:15.7534413Z     {
2026-06-19T23:28:15.7534546Z       "id": "REQ-SEAM-INJECT",
2026-06-19T23:28:15.7534756Z       "title": "inject-input methods configurable per activity-state",
2026-06-19T23:28:15.7534890Z       "requiredStages": [
2026-06-19T23:28:15.7535014Z         "impl",
2026-06-19T23:28:15.7535147Z         "unit"
2026-06-19T23:28:15.7535267Z       ],
2026-06-19T23:28:15.7535390Z       "stages": {
2026-06-19T23:28:15.7535514Z         "doc": {
2026-06-19T23:28:15.7535657Z           "complete": false,
2026-06-19T23:28:15.7535786Z           "evidence": []
2026-06-19T23:28:15.7535916Z         },
2026-06-19T23:28:15.7536043Z         "impl": {
2026-06-19T23:28:15.7536173Z           "complete": true,
2026-06-19T23:28:15.7536310Z           "evidence": [
2026-06-19T23:28:15.7536425Z             {
2026-06-19T23:28:15.7536587Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7536719Z               "line": 19
2026-06-19T23:28:15.7536853Z             },
2026-06-19T23:28:15.7536970Z             {
2026-06-19T23:28:15.7537127Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7537252Z               "line": 111
2026-06-19T23:28:15.7537375Z             }
2026-06-19T23:28:15.7537504Z           ]
2026-06-19T23:28:15.7537623Z         },
2026-06-19T23:28:15.7537757Z         "int": {
2026-06-19T23:28:15.7537886Z           "complete": false,
2026-06-19T23:28:15.7538014Z           "evidence": []
2026-06-19T23:28:15.7538143Z         },
2026-06-19T23:28:15.7538266Z         "unit": {
2026-06-19T23:28:15.7538410Z           "complete": true,
2026-06-19T23:28:15.7538538Z           "evidence": [
2026-06-19T23:28:15.7538667Z             {
2026-06-19T23:28:15.7538829Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7539045Z               "line": 345
2026-06-19T23:28:15.7539163Z             },
2026-06-19T23:28:15.7539278Z             {
2026-06-19T23:28:15.7539459Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7539586Z               "line": 365
2026-06-19T23:28:15.7539711Z             }
2026-06-19T23:28:15.7539837Z           ]
2026-06-19T23:28:15.7539955Z         }
2026-06-19T23:28:15.7540081Z       }
2026-06-19T23:28:15.7540195Z     },
2026-06-19T23:28:15.7540318Z     {
2026-06-19T23:28:15.7540467Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-19T23:28:15.7540653Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-19T23:28:15.7540786Z       "requiredStages": [
2026-06-19T23:28:15.7540904Z         "impl",
2026-06-19T23:28:15.7541029Z         "unit"
2026-06-19T23:28:15.7541148Z       ],
2026-06-19T23:28:15.7541282Z       "stages": {
2026-06-19T23:28:15.7541406Z         "doc": {
2026-06-19T23:28:15.7541539Z           "complete": false,
2026-06-19T23:28:15.7541673Z           "evidence": []
2026-06-19T23:28:15.7541791Z         },
2026-06-19T23:28:15.7541927Z         "impl": {
2026-06-19T23:28:15.7542059Z           "complete": true,
2026-06-19T23:28:15.7542186Z           "evidence": [
2026-06-19T23:28:15.7542305Z             {
2026-06-19T23:28:15.7542474Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7542714Z               "line": 18
2026-06-19T23:28:15.7542837Z             },
2026-06-19T23:28:15.7542962Z             {
2026-06-19T23:28:15.7543123Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7543258Z               "line": 427
2026-06-19T23:28:15.7543382Z             }
2026-06-19T23:28:15.7543500Z           ]
2026-06-19T23:28:15.7543630Z         },
2026-06-19T23:28:15.7543757Z         "int": {
2026-06-19T23:28:15.7543897Z           "complete": false,
2026-06-19T23:28:15.7544025Z           "evidence": []
2026-06-19T23:28:15.7544149Z         },
2026-06-19T23:28:15.7544278Z         "unit": {
2026-06-19T23:28:15.7544531Z           "complete": true,
2026-06-19T23:28:15.7544668Z           "evidence": [
2026-06-19T23:28:15.7544794Z             {
2026-06-19T23:28:15.7544954Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7545086Z               "line": 877
2026-06-19T23:28:15.7545212Z             },
2026-06-19T23:28:15.7545339Z             {
2026-06-19T23:28:15.7545493Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7545621Z               "line": 887
2026-06-19T23:28:15.7545730Z             }
2026-06-19T23:28:15.7545860Z           ]
2026-06-19T23:28:15.7545973Z         }
2026-06-19T23:28:15.7546094Z       }
2026-06-19T23:28:15.7546208Z     },
2026-06-19T23:28:15.7546321Z     {
2026-06-19T23:28:15.7546471Z       "id": "REQ-SEAM-PSYCHE",
2026-06-19T23:28:15.7546660Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-19T23:28:15.7546795Z       "requiredStages": [
2026-06-19T23:28:15.7546913Z         "impl",
2026-06-19T23:28:15.7547048Z         "unit",
2026-06-19T23:28:15.7547171Z         "int"
2026-06-19T23:28:15.7547293Z       ],
2026-06-19T23:28:15.7547418Z       "stages": {
2026-06-19T23:28:15.7547539Z         "doc": {
2026-06-19T23:28:15.7547668Z           "complete": false,
2026-06-19T23:28:15.7547793Z           "evidence": []
2026-06-19T23:28:15.7547925Z         },
2026-06-19T23:28:15.7548055Z         "impl": {
2026-06-19T23:28:15.7548183Z           "complete": true,
2026-06-19T23:28:15.7548322Z           "evidence": [
2026-06-19T23:28:15.7548450Z             {
2026-06-19T23:28:15.7548602Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-19T23:28:15.7548736Z               "line": 19
2026-06-19T23:28:15.7548864Z             },
2026-06-19T23:28:15.7549047Z             {
2026-06-19T23:28:15.7549199Z               "path": "crates/spt/src/api/live.rs",
2026-06-19T23:28:15.7549338Z               "line": 12
2026-06-19T23:28:15.7549480Z             },
2026-06-19T23:28:15.7549610Z             {
2026-06-19T23:28:15.7549770Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7549910Z               "line": 297
2026-06-19T23:28:15.7550033Z             }
2026-06-19T23:28:15.7550156Z           ]
2026-06-19T23:28:15.7550280Z         },
2026-06-19T23:28:15.7550402Z         "int": {
2026-06-19T23:28:15.7550530Z           "complete": true,
2026-06-19T23:28:15.7550665Z           "evidence": [
2026-06-19T23:28:15.7550797Z             {
2026-06-19T23:28:15.7550970Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.7551098Z               "line": 259
2026-06-19T23:28:15.7551218Z             }
2026-06-19T23:28:15.7551342Z           ]
2026-06-19T23:28:15.7551464Z         },
2026-06-19T23:28:15.7551589Z         "unit": {
2026-06-19T23:28:15.7551727Z           "complete": true,
2026-06-19T23:28:15.7551857Z           "evidence": [
2026-06-19T23:28:15.7551980Z             {
2026-06-19T23:28:15.7552148Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-19T23:28:15.7552276Z               "line": 195
2026-06-19T23:28:15.7552405Z             },
2026-06-19T23:28:15.7552525Z             {
2026-06-19T23:28:15.7552694Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-19T23:28:15.7552823Z               "line": 202
2026-06-19T23:28:15.7552955Z             },
2026-06-19T23:28:15.7553082Z             {
2026-06-19T23:28:15.7553345Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-19T23:28:15.7553470Z               "line": 225
2026-06-19T23:28:15.7553594Z             },
2026-06-19T23:28:15.7553722Z             {
2026-06-19T23:28:15.7553880Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-19T23:28:15.7554012Z               "line": 106
2026-06-19T23:28:15.7554142Z             },
2026-06-19T23:28:15.7554261Z             {
2026-06-19T23:28:15.7554429Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-19T23:28:15.7554556Z               "line": 137
2026-06-19T23:28:15.7554690Z             },
2026-06-19T23:28:15.7554805Z             {
2026-06-19T23:28:15.7555068Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-19T23:28:15.7555195Z               "line": 161
2026-06-19T23:28:15.7555315Z             }
2026-06-19T23:28:15.7555435Z           ]
2026-06-19T23:28:15.7555557Z         }
2026-06-19T23:28:15.7555685Z       }
2026-06-19T23:28:15.7555806Z     },
2026-06-19T23:28:15.7555928Z     {
2026-06-19T23:28:15.7556077Z       "id": "REQ-SEAM-RESUME",
2026-06-19T23:28:15.7556310Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-19T23:28:15.7556458Z       "requiredStages": [
2026-06-19T23:28:15.7556576Z         "impl",
2026-06-19T23:28:15.7556702Z         "unit"
2026-06-19T23:28:15.7556816Z       ],
2026-06-19T23:28:15.7556944Z       "stages": {
2026-06-19T23:28:15.7557078Z         "doc": {
2026-06-19T23:28:15.7557216Z           "complete": false,
2026-06-19T23:28:15.7557351Z           "evidence": []
2026-06-19T23:28:15.7557473Z         },
2026-06-19T23:28:15.7557598Z         "impl": {
2026-06-19T23:28:15.7557731Z           "complete": true,
2026-06-19T23:28:15.7557868Z           "evidence": [
2026-06-19T23:28:15.7557987Z             {
2026-06-19T23:28:15.7558142Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.7558266Z               "line": 19
2026-06-19T23:28:15.7558391Z             }
2026-06-19T23:28:15.7558519Z           ]
2026-06-19T23:28:15.7558634Z         },
2026-06-19T23:28:15.7558757Z         "int": {
2026-06-19T23:28:15.7558896Z           "complete": false,
2026-06-19T23:28:15.7559091Z           "evidence": []
2026-06-19T23:28:15.7559211Z         },
2026-06-19T23:28:15.7559335Z         "unit": {
2026-06-19T23:28:15.7559491Z           "complete": true,
2026-06-19T23:28:15.7559607Z           "evidence": [
2026-06-19T23:28:15.7559739Z             {
2026-06-19T23:28:15.7559908Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.7560035Z               "line": 201
2026-06-19T23:28:15.7560161Z             },
2026-06-19T23:28:15.7560279Z             {
2026-06-19T23:28:15.7560451Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.7560580Z               "line": 223
2026-06-19T23:28:15.7560707Z             },
2026-06-19T23:28:15.7560831Z             {
2026-06-19T23:28:15.7560981Z               "path": "crates/spt-live/src/resume.rs",
2026-06-19T23:28:15.7561110Z               "line": 244
2026-06-19T23:28:15.7561239Z             }
2026-06-19T23:28:15.7561362Z           ]
2026-06-19T23:28:15.7561483Z         }
2026-06-19T23:28:15.7561606Z       }
2026-06-19T23:28:15.7561719Z     },
2026-06-19T23:28:15.7561844Z     {
2026-06-19T23:28:15.7561987Z       "id": "REQ-SEAM-SPAWN",
2026-06-19T23:28:15.7562131Z       "title": "spawn-session seam",
2026-06-19T23:28:15.7562268Z       "requiredStages": [
2026-06-19T23:28:15.7562393Z         "impl",
2026-06-19T23:28:15.7562521Z         "unit"
2026-06-19T23:28:15.7562645Z       ],
2026-06-19T23:28:15.7562775Z       "stages": {
2026-06-19T23:28:15.7562888Z         "doc": {
2026-06-19T23:28:15.7563023Z           "complete": false,
2026-06-19T23:28:15.7563165Z           "evidence": []
2026-06-19T23:28:15.7563292Z         },
2026-06-19T23:28:15.7563431Z         "impl": {
2026-06-19T23:28:15.7563562Z           "complete": true,
2026-06-19T23:28:15.7563691Z           "evidence": [
2026-06-19T23:28:15.7563820Z             {
2026-06-19T23:28:15.7563996Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.7564225Z               "line": 20
2026-06-19T23:28:15.7564345Z             }
2026-06-19T23:28:15.7564473Z           ]
2026-06-19T23:28:15.7564596Z         },
2026-06-19T23:28:15.7564721Z         "int": {
2026-06-19T23:28:15.7564859Z           "complete": false,
2026-06-19T23:28:15.7564989Z           "evidence": []
2026-06-19T23:28:15.7565112Z         },
2026-06-19T23:28:15.7565235Z         "unit": {
2026-06-19T23:28:15.7565379Z           "complete": true,
2026-06-19T23:28:15.7565512Z           "evidence": [
2026-06-19T23:28:15.7565642Z             {
2026-06-19T23:28:15.7565808Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.7566046Z               "line": 608
2026-06-19T23:28:15.7566173Z             },
2026-06-19T23:28:15.7566298Z             {
2026-06-19T23:28:15.7566464Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.7566599Z               "line": 615
2026-06-19T23:28:15.7566714Z             },
2026-06-19T23:28:15.7566841Z             {
2026-06-19T23:28:15.7566999Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.7567127Z               "line": 721
2026-06-19T23:28:15.7567252Z             },
2026-06-19T23:28:15.7567381Z             {
2026-06-19T23:28:15.7567553Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.7567680Z               "line": 727
2026-06-19T23:28:15.7567810Z             },
2026-06-19T23:28:15.7567934Z             {
2026-06-19T23:28:15.7568095Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.7568221Z               "line": 752
2026-06-19T23:28:15.7568352Z             },
2026-06-19T23:28:15.7568486Z             {
2026-06-19T23:28:15.7568637Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-19T23:28:15.7568773Z               "line": 789
2026-06-19T23:28:15.7568898Z             }
2026-06-19T23:28:15.7569142Z           ]
2026-06-19T23:28:15.7569266Z         }
2026-06-19T23:28:15.7569403Z       }
2026-06-19T23:28:15.7569533Z     },
2026-06-19T23:28:15.7569651Z     {
2026-06-19T23:28:15.7569800Z       "id": "REQ-SEAM-UPDATE",
2026-06-19T23:28:15.7570008Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-19T23:28:15.7570153Z       "requiredStages": [
2026-06-19T23:28:15.7570276Z         "impl",
2026-06-19T23:28:15.7570411Z         "unit"
2026-06-19T23:28:15.7570538Z       ],
2026-06-19T23:28:15.7570667Z       "stages": {
2026-06-19T23:28:15.7570802Z         "doc": {
2026-06-19T23:28:15.7570925Z           "complete": false,
2026-06-19T23:28:15.7571064Z           "evidence": []
2026-06-19T23:28:15.7571191Z         },
2026-06-19T23:28:15.7571323Z         "impl": {
2026-06-19T23:28:15.7571471Z           "complete": true,
2026-06-19T23:28:15.7571598Z           "evidence": [
2026-06-19T23:28:15.7571727Z             {
2026-06-19T23:28:15.7571917Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.7572052Z               "line": 28
2026-06-19T23:28:15.7572180Z             },
2026-06-19T23:28:15.7572299Z             {
2026-06-19T23:28:15.7572476Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.7572599Z               "line": 88
2026-06-19T23:28:15.7572729Z             }
2026-06-19T23:28:15.7572847Z           ]
2026-06-19T23:28:15.7572977Z         },
2026-06-19T23:28:15.7573100Z         "int": {
2026-06-19T23:28:15.7573238Z           "complete": false,
2026-06-19T23:28:15.7573363Z           "evidence": []
2026-06-19T23:28:15.7573486Z         },
2026-06-19T23:28:15.7573611Z         "unit": {
2026-06-19T23:28:15.7573744Z           "complete": true,
2026-06-19T23:28:15.7573876Z           "evidence": [
2026-06-19T23:28:15.7573996Z             {
2026-06-19T23:28:15.7574174Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.7574304Z               "line": 326
2026-06-19T23:28:15.7574427Z             },
2026-06-19T23:28:15.7574556Z             {
2026-06-19T23:28:15.7574861Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.7575000Z               "line": 337
2026-06-19T23:28:15.7575123Z             }
2026-06-19T23:28:15.7575244Z           ]
2026-06-19T23:28:15.7575371Z         }
2026-06-19T23:28:15.7575490Z       }
2026-06-19T23:28:15.7575610Z     },
2026-06-19T23:28:15.7575734Z     {
2026-06-19T23:28:15.7575869Z       "id": "REQ-SEC-1",
2026-06-19T23:28:15.7576315Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-19T23:28:15.7576460Z       "requiredStages": [
2026-06-19T23:28:15.7576583Z         "impl",
2026-06-19T23:28:15.7576815Z         "unit"
2026-06-19T23:28:15.7576945Z       ],
2026-06-19T23:28:15.7577072Z       "stages": {
2026-06-19T23:28:15.7577197Z         "doc": {
2026-06-19T23:28:15.7577335Z           "complete": false,
2026-06-19T23:28:15.7577465Z           "evidence": []
2026-06-19T23:28:15.7577593Z         },
2026-06-19T23:28:15.7577726Z         "impl": {
2026-06-19T23:28:15.7577860Z           "complete": true,
2026-06-19T23:28:15.7577988Z           "evidence": [
2026-06-19T23:28:15.7578118Z             {
2026-06-19T23:28:15.7578298Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-19T23:28:15.7578428Z               "line": 86
2026-06-19T23:28:15.7578551Z             },
2026-06-19T23:28:15.7578675Z             {
2026-06-19T23:28:15.7578846Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-19T23:28:15.7579021Z               "line": 116
2026-06-19T23:28:15.7579145Z             },
2026-06-19T23:28:15.7579272Z             {
2026-06-19T23:28:15.7579440Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-19T23:28:15.7579568Z               "line": 130
2026-06-19T23:28:15.7579697Z             },
2026-06-19T23:28:15.7579821Z             {
2026-06-19T23:28:15.7579982Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7580116Z               "line": 109
2026-06-19T23:28:15.7580239Z             },
2026-06-19T23:28:15.7580365Z             {
2026-06-19T23:28:15.7580536Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7580661Z               "line": 130
2026-06-19T23:28:15.7580793Z             },
2026-06-19T23:28:15.7580917Z             {
2026-06-19T23:28:15.7581084Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7581217Z               "line": 143
2026-06-19T23:28:15.7581338Z             },
2026-06-19T23:28:15.7581465Z             {
2026-06-19T23:28:15.7581624Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7581761Z               "line": 209
2026-06-19T23:28:15.7581879Z             },
2026-06-19T23:28:15.7582003Z             {
2026-06-19T23:28:15.7582168Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7582302Z               "line": 235
2026-06-19T23:28:15.7582425Z             },
2026-06-19T23:28:15.7582544Z             {
2026-06-19T23:28:15.7582698Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7582830Z               "line": 5267
2026-06-19T23:28:15.7582956Z             }
2026-06-19T23:28:15.7583074Z           ]
2026-06-19T23:28:15.7583198Z         },
2026-06-19T23:28:15.7583331Z         "int": {
2026-06-19T23:28:15.7583460Z           "complete": false,
2026-06-19T23:28:15.7583599Z           "evidence": []
2026-06-19T23:28:15.7583722Z         },
2026-06-19T23:28:15.7583857Z         "unit": {
2026-06-19T23:28:15.7583998Z           "complete": true,
2026-06-19T23:28:15.7584128Z           "evidence": [
2026-06-19T23:28:15.7584257Z             {
2026-06-19T23:28:15.7584426Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-19T23:28:15.7584565Z               "line": 142
2026-06-19T23:28:15.7584692Z             },
2026-06-19T23:28:15.7584820Z             {
2026-06-19T23:28:15.7584987Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-19T23:28:15.7585116Z               "line": 194
2026-06-19T23:28:15.7585245Z             },
2026-06-19T23:28:15.7585499Z             {
2026-06-19T23:28:15.7585659Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-19T23:28:15.7585789Z               "line": 235
2026-06-19T23:28:15.7585912Z             },
2026-06-19T23:28:15.7586041Z             {
2026-06-19T23:28:15.7586213Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-19T23:28:15.7586337Z               "line": 140
2026-06-19T23:28:15.7586457Z             },
2026-06-19T23:28:15.7586585Z             {
2026-06-19T23:28:15.7586738Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7586870Z               "line": 247
2026-06-19T23:28:15.7587097Z             },
2026-06-19T23:28:15.7587218Z             {
2026-06-19T23:28:15.7587390Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7587523Z               "line": 277
2026-06-19T23:28:15.7587652Z             },
2026-06-19T23:28:15.7587777Z             {
2026-06-19T23:28:15.7587928Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7588067Z               "line": 310
2026-06-19T23:28:15.7588191Z             },
2026-06-19T23:28:15.7588319Z             {
2026-06-19T23:28:15.7588477Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7588605Z               "line": 329
2026-06-19T23:28:15.7588735Z             },
2026-06-19T23:28:15.7588858Z             {
2026-06-19T23:28:15.7589087Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7589206Z               "line": 362
2026-06-19T23:28:15.7589341Z             },
2026-06-19T23:28:15.7589463Z             {
2026-06-19T23:28:15.7589630Z               "path": "crates/spt-store/src/access.rs",
2026-06-19T23:28:15.7589761Z               "line": 386
2026-06-19T23:28:15.7589884Z             },
2026-06-19T23:28:15.7590010Z             {
2026-06-19T23:28:15.7590170Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7590310Z               "line": 8268
2026-06-19T23:28:15.7590424Z             }
2026-06-19T23:28:15.7590557Z           ]
2026-06-19T23:28:15.7590682Z         }
2026-06-19T23:28:15.7590800Z       }
2026-06-19T23:28:15.7590915Z     },
2026-06-19T23:28:15.7591024Z     {
2026-06-19T23:28:15.7591177Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-19T23:28:15.7595001Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-19T23:28:15.7595280Z       "requiredStages": [
2026-06-19T23:28:15.7595390Z         "impl",
2026-06-19T23:28:15.7595524Z         "unit",
2026-06-19T23:28:15.7595652Z         "int"
2026-06-19T23:28:15.7595782Z       ],
2026-06-19T23:28:15.7595905Z       "stages": {
2026-06-19T23:28:15.7596040Z         "doc": {
2026-06-19T23:28:15.7596182Z           "complete": false,
2026-06-19T23:28:15.7596311Z           "evidence": []
2026-06-19T23:28:15.7596448Z         },
2026-06-19T23:28:15.7596782Z         "impl": {
2026-06-19T23:28:15.7596945Z           "complete": true,
2026-06-19T23:28:15.7597073Z           "evidence": [
2026-06-19T23:28:15.7597202Z             {
2026-06-19T23:28:15.7602305Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.7602482Z               "line": 1018
2026-06-19T23:28:15.7602620Z             },
2026-06-19T23:28:15.7602740Z             {
2026-06-19T23:28:15.7602933Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.7603071Z               "line": 1542
2026-06-19T23:28:15.7603207Z             },
2026-06-19T23:28:15.7603335Z             {
2026-06-19T23:28:15.7603484Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7603794Z               "line": 2822
2026-06-19T23:28:15.7603917Z             }
2026-06-19T23:28:15.7604047Z           ]
2026-06-19T23:28:15.7604199Z         },
2026-06-19T23:28:15.7604328Z         "int": {
2026-06-19T23:28:15.7604475Z           "complete": true,
2026-06-19T23:28:15.7604633Z           "evidence": [
2026-06-19T23:28:15.7604767Z             {
2026-06-19T23:28:15.7604958Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-19T23:28:15.7605086Z               "line": 188
2026-06-19T23:28:15.7605214Z             },
2026-06-19T23:28:15.7605340Z             {
2026-06-19T23:28:15.7605519Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-19T23:28:15.7605647Z               "line": 506
2026-06-19T23:28:15.7605774Z             }
2026-06-19T23:28:15.7605907Z           ]
2026-06-19T23:28:15.7606032Z         },
2026-06-19T23:28:15.7606160Z         "unit": {
2026-06-19T23:28:15.7606304Z           "complete": true,
2026-06-19T23:28:15.7606427Z           "evidence": [
2026-06-19T23:28:15.7606556Z             {
2026-06-19T23:28:15.7606723Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-19T23:28:15.7606886Z               "line": 934
2026-06-19T23:28:15.7607013Z             },
2026-06-19T23:28:15.7607142Z             {
2026-06-19T23:28:15.7607300Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7607452Z               "line": 7458
2026-06-19T23:28:15.7607597Z             }
2026-06-19T23:28:15.7607733Z           ]
2026-06-19T23:28:15.7607858Z         }
2026-06-19T23:28:15.7607986Z       }
2026-06-19T23:28:15.7608115Z     },
2026-06-19T23:28:15.7608241Z     {
2026-06-19T23:28:15.7608376Z       "id": "REQ-SHELL-1",
2026-06-19T23:28:15.7609474Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-19T23:28:15.7609621Z       "requiredStages": [
2026-06-19T23:28:15.7609750Z         "impl",
2026-06-19T23:28:15.7609878Z         "unit",
2026-06-19T23:28:15.7610002Z         "int"
2026-06-19T23:28:15.7610128Z       ],
2026-06-19T23:28:15.7610259Z       "stages": {
2026-06-19T23:28:15.7610384Z         "doc": {
2026-06-19T23:28:15.7610531Z           "complete": false,
2026-06-19T23:28:15.7610664Z           "evidence": []
2026-06-19T23:28:15.7610783Z         },
2026-06-19T23:28:15.7610910Z         "impl": {
2026-06-19T23:28:15.7611033Z           "complete": true,
2026-06-19T23:28:15.7611224Z           "evidence": [
2026-06-19T23:28:15.7611339Z             {
2026-06-19T23:28:15.7611525Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7611658Z               "line": 189
2026-06-19T23:28:15.7611773Z             },
2026-06-19T23:28:15.7611896Z             {
2026-06-19T23:28:15.7612069Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7612249Z               "line": 268
2026-06-19T23:28:15.7612374Z             },
2026-06-19T23:28:15.7612507Z             {
2026-06-19T23:28:15.7612685Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7612812Z               "line": 27
2026-06-19T23:28:15.7613051Z             },
2026-06-19T23:28:15.7613175Z             {
2026-06-19T23:28:15.7613338Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7613470Z               "line": 52
2026-06-19T23:28:15.7613598Z             },
2026-06-19T23:28:15.7613730Z             {
2026-06-19T23:28:15.7613896Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7614035Z               "line": 144
2026-06-19T23:28:15.7614153Z             },
2026-06-19T23:28:15.7614278Z             {
2026-06-19T23:28:15.7614449Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7614579Z               "line": 176
2026-06-19T23:28:15.7614801Z             },
2026-06-19T23:28:15.7614917Z             {
2026-06-19T23:28:15.7615088Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7615213Z               "line": 22
2026-06-19T23:28:15.7615341Z             },
2026-06-19T23:28:15.7615518Z             {
2026-06-19T23:28:15.7615688Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7615843Z               "line": 65
2026-06-19T23:28:15.7615971Z             },
2026-06-19T23:28:15.7616093Z             {
2026-06-19T23:28:15.7616260Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7616395Z               "line": 76
2026-06-19T23:28:15.7616525Z             },
2026-06-19T23:28:15.7616645Z             {
2026-06-19T23:28:15.7616806Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7616935Z               "line": 151
2026-06-19T23:28:15.7617068Z             },
2026-06-19T23:28:15.7617193Z             {
2026-06-19T23:28:15.7617363Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7617493Z               "line": 210
2026-06-19T23:28:15.7617617Z             },
2026-06-19T23:28:15.7617740Z             {
2026-06-19T23:28:15.7617912Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7618046Z               "line": 259
2026-06-19T23:28:15.7618166Z             },
2026-06-19T23:28:15.7618284Z             {
2026-06-19T23:28:15.7618448Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7618579Z               "line": 281
2026-06-19T23:28:15.7618705Z             },
2026-06-19T23:28:15.7618833Z             {
2026-06-19T23:28:15.7619084Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7619204Z               "line": 294
2026-06-19T23:28:15.7619341Z             },
2026-06-19T23:28:15.7619471Z             {
2026-06-19T23:28:15.7619637Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.7619771Z               "line": 217
2026-06-19T23:28:15.7619899Z             },
2026-06-19T23:28:15.7620029Z             {
2026-06-19T23:28:15.7620181Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.7620329Z               "line": 233
2026-06-19T23:28:15.7620457Z             },
2026-06-19T23:28:15.7620581Z             {
2026-06-19T23:28:15.7620763Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.7620896Z               "line": 41
2026-06-19T23:28:15.7621026Z             },
2026-06-19T23:28:15.7621139Z             {
2026-06-19T23:28:15.7621320Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.7621455Z               "line": 222
2026-06-19T23:28:15.7621574Z             },
2026-06-19T23:28:15.7621704Z             {
2026-06-19T23:28:15.7621869Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-19T23:28:15.7622000Z               "line": 173
2026-06-19T23:28:15.7622127Z             },
2026-06-19T23:28:15.7622257Z             {
2026-06-19T23:28:15.7622423Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.7622548Z               "line": 354
2026-06-19T23:28:15.7622676Z             },
2026-06-19T23:28:15.7622800Z             {
2026-06-19T23:28:15.7622958Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.7623100Z               "line": 419
2026-06-19T23:28:15.7623329Z             },
2026-06-19T23:28:15.7623458Z             {
2026-06-19T23:28:15.7623630Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7623768Z               "line": 329
2026-06-19T23:28:15.7623894Z             },
2026-06-19T23:28:15.7624025Z             {
2026-06-19T23:28:15.7624172Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7624304Z               "line": 6292
2026-06-19T23:28:15.7624436Z             },
2026-06-19T23:28:15.7624557Z             {
2026-06-19T23:28:15.7624709Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7624834Z               "line": 6442
2026-06-19T23:28:15.7625066Z             },
2026-06-19T23:28:15.7625191Z             {
2026-06-19T23:28:15.7625348Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7625487Z               "line": 6618
2026-06-19T23:28:15.7625605Z             }
2026-06-19T23:28:15.7625729Z           ]
2026-06-19T23:28:15.7625849Z         },
2026-06-19T23:28:15.7625977Z         "int": {
2026-06-19T23:28:15.7626121Z           "complete": true,
2026-06-19T23:28:15.7626249Z           "evidence": [
2026-06-19T23:28:15.7626378Z             {
2026-06-19T23:28:15.7626549Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7626686Z               "line": 713
2026-06-19T23:28:15.7626815Z             },
2026-06-19T23:28:15.7626946Z             {
2026-06-19T23:28:15.7627133Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-19T23:28:15.7627261Z               "line": 8
2026-06-19T23:28:15.7627386Z             },
2026-06-19T23:28:15.7627495Z             {
2026-06-19T23:28:15.7627666Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-19T23:28:15.7627791Z               "line": 49
2026-06-19T23:28:15.7627919Z             },
2026-06-19T23:28:15.7628044Z             {
2026-06-19T23:28:15.7628220Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7628354Z               "line": 778
2026-06-19T23:28:15.7628472Z             },
2026-06-19T23:28:15.7628601Z             {
2026-06-19T23:28:15.7628773Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7628911Z               "line": 1213
2026-06-19T23:28:15.7629116Z             },
2026-06-19T23:28:15.7629241Z             {
2026-06-19T23:28:15.7629421Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-19T23:28:15.7629549Z               "line": 17
2026-06-19T23:28:15.7629679Z             },
2026-06-19T23:28:15.7629801Z             {
2026-06-19T23:28:15.7629964Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-19T23:28:15.7630098Z               "line": 14
2026-06-19T23:28:15.7630226Z             }
2026-06-19T23:28:15.7630355Z           ]
2026-06-19T23:28:15.7630473Z         },
2026-06-19T23:28:15.7630604Z         "unit": {
2026-06-19T23:28:15.7630742Z           "complete": true,
2026-06-19T23:28:15.7630875Z           "evidence": [
2026-06-19T23:28:15.7631003Z             {
2026-06-19T23:28:15.7631175Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7631314Z               "line": 246
2026-06-19T23:28:15.7631437Z             },
2026-06-19T23:28:15.7631567Z             {
2026-06-19T23:28:15.7631737Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7631870Z               "line": 279
2026-06-19T23:28:15.7631992Z             },
2026-06-19T23:28:15.7632110Z             {
2026-06-19T23:28:15.7632284Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7632411Z               "line": 319
2026-06-19T23:28:15.7632546Z             },
2026-06-19T23:28:15.7632673Z             {
2026-06-19T23:28:15.7632851Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7632979Z               "line": 599
2026-06-19T23:28:15.7633103Z             },
2026-06-19T23:28:15.7633227Z             {
2026-06-19T23:28:15.7633389Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7633656Z               "line": 672
2026-06-19T23:28:15.7633781Z             },
2026-06-19T23:28:15.7633904Z             {
2026-06-19T23:28:15.7634076Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7634209Z               "line": 816
2026-06-19T23:28:15.7634347Z             },
2026-06-19T23:28:15.7634463Z             {
2026-06-19T23:28:15.7634632Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.7634766Z               "line": 595
2026-06-19T23:28:15.7634887Z             },
2026-06-19T23:28:15.7635016Z             {
2026-06-19T23:28:15.7635179Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-19T23:28:15.7635403Z               "line": 399
2026-06-19T23:28:15.7635531Z             },
2026-06-19T23:28:15.7635660Z             {
2026-06-19T23:28:15.7635813Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7635945Z               "line": 8948
2026-06-19T23:28:15.7636075Z             },
2026-06-19T23:28:15.7636203Z             {
2026-06-19T23:28:15.7636362Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7636499Z               "line": 9272
2026-06-19T23:28:15.7636629Z             },
2026-06-19T23:28:15.7636757Z             {
2026-06-19T23:28:15.7636909Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7637043Z               "line": 9689
2026-06-19T23:28:15.7637166Z             }
2026-06-19T23:28:15.7637294Z           ]
2026-06-19T23:28:15.7637417Z         }
2026-06-19T23:28:15.7637544Z       }
2026-06-19T23:28:15.7637669Z     },
2026-06-19T23:28:15.7637793Z     {
2026-06-19T23:28:15.7637936Z       "id": "REQ-SHELL-2",
2026-06-19T23:28:15.7639676Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-19T23:28:15.7639835Z       "requiredStages": [
2026-06-19T23:28:15.7639967Z         "impl",
2026-06-19T23:28:15.7640090Z         "unit",
2026-06-19T23:28:15.7640219Z         "int"
2026-06-19T23:28:15.7640348Z       ],
2026-06-19T23:28:15.7640476Z       "stages": {
2026-06-19T23:28:15.7640600Z         "doc": {
2026-06-19T23:28:15.7640743Z           "complete": false,
2026-06-19T23:28:15.7640878Z           "evidence": []
2026-06-19T23:28:15.7641001Z         },
2026-06-19T23:28:15.7641120Z         "impl": {
2026-06-19T23:28:15.7641253Z           "complete": true,
2026-06-19T23:28:15.7641382Z           "evidence": [
2026-06-19T23:28:15.7641507Z             {
2026-06-19T23:28:15.7641682Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.7641812Z               "line": 217
2026-06-19T23:28:15.7641939Z             },
2026-06-19T23:28:15.7642069Z             {
2026-06-19T23:28:15.7642245Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7642382Z               "line": 403
2026-06-19T23:28:15.7642511Z             },
2026-06-19T23:28:15.7642633Z             {
2026-06-19T23:28:15.7642805Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-19T23:28:15.7642938Z               "line": 250
2026-06-19T23:28:15.7643062Z             },
2026-06-19T23:28:15.7643187Z             {
2026-06-19T23:28:15.7643358Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.7643487Z               "line": 403
2026-06-19T23:28:15.7643610Z             },
2026-06-19T23:28:15.7643745Z             {
2026-06-19T23:28:15.7643901Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7644036Z               "line": 30
2026-06-19T23:28:15.7644164Z             },
2026-06-19T23:28:15.7644292Z             {
2026-06-19T23:28:15.7644459Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7644699Z               "line": 409
2026-06-19T23:28:15.7644816Z             },
2026-06-19T23:28:15.7644942Z             {
2026-06-19T23:28:15.7645116Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7645249Z               "line": 445
2026-06-19T23:28:15.7645378Z             },
2026-06-19T23:28:15.7645500Z             {
2026-06-19T23:28:15.7645663Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7645791Z               "line": 660
2026-06-19T23:28:15.7645915Z             },
2026-06-19T23:28:15.7646044Z             {
2026-06-19T23:28:15.7646210Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.7646448Z               "line": 348
2026-06-19T23:28:15.7646573Z             },
2026-06-19T23:28:15.7646697Z             {
2026-06-19T23:28:15.7646874Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7646997Z               "line": 115
2026-06-19T23:28:15.7647121Z             },
2026-06-19T23:28:15.7647251Z             {
2026-06-19T23:28:15.7647427Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7647562Z               "line": 120
2026-06-19T23:28:15.7647683Z             },
2026-06-19T23:28:15.7647811Z             {
2026-06-19T23:28:15.7647982Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7648119Z               "line": 374
2026-06-19T23:28:15.7648249Z             },
2026-06-19T23:28:15.7648372Z             {
2026-06-19T23:28:15.7648544Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7648663Z               "line": 500
2026-06-19T23:28:15.7648792Z             },
2026-06-19T23:28:15.7648921Z             {
2026-06-19T23:28:15.7649188Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7649340Z               "line": 24
2026-06-19T23:28:15.7649465Z             },
2026-06-19T23:28:15.7649598Z             {
2026-06-19T23:28:15.7649765Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7649898Z               "line": 76
2026-06-19T23:28:15.7650026Z             },
2026-06-19T23:28:15.7650156Z             {
2026-06-19T23:28:15.7650327Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7650452Z               "line": 154
2026-06-19T23:28:15.7650584Z             },
2026-06-19T23:28:15.7650698Z             {
2026-06-19T23:28:15.7650880Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7651013Z               "line": 177
2026-06-19T23:28:15.7651138Z             },
2026-06-19T23:28:15.7651270Z             {
2026-06-19T23:28:15.7651438Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7651580Z               "line": 273
2026-06-19T23:28:15.7651700Z             },
2026-06-19T23:28:15.7651828Z             {
2026-06-19T23:28:15.7652000Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7652129Z               "line": 456
2026-06-19T23:28:15.7652271Z             },
2026-06-19T23:28:15.7652396Z             {
2026-06-19T23:28:15.7652571Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7652687Z               "line": 538
2026-06-19T23:28:15.7652814Z             },
2026-06-19T23:28:15.7652937Z             {
2026-06-19T23:28:15.7653113Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-19T23:28:15.7653250Z               "line": 27
2026-06-19T23:28:15.7653370Z             },
2026-06-19T23:28:15.7653502Z             {
2026-06-19T23:28:15.7653666Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-19T23:28:15.7653799Z               "line": 48
2026-06-19T23:28:15.7653928Z             },
2026-06-19T23:28:15.7654056Z             {
2026-06-19T23:28:15.7654233Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7654366Z               "line": 513
2026-06-19T23:28:15.7654494Z             },
2026-06-19T23:28:15.7654615Z             {
2026-06-19T23:28:15.7654776Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7655010Z               "line": 1893
2026-06-19T23:28:15.7655133Z             },
2026-06-19T23:28:15.7655264Z             {
2026-06-19T23:28:15.7655415Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7655550Z               "line": 6306
2026-06-19T23:28:15.7655677Z             },
2026-06-19T23:28:15.7655804Z             {
2026-06-19T23:28:15.7655962Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7656093Z               "line": 6367
2026-06-19T23:28:15.7656223Z             },
2026-06-19T23:28:15.7656346Z             {
2026-06-19T23:28:15.7656504Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7656718Z               "line": 6395
2026-06-19T23:28:15.7656853Z             },
2026-06-19T23:28:15.7656981Z             {
2026-06-19T23:28:15.7657129Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7657266Z               "line": 6449
2026-06-19T23:28:15.7657386Z             },
2026-06-19T23:28:15.7657511Z             {
2026-06-19T23:28:15.7657657Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7657792Z               "line": 6704
2026-06-19T23:28:15.7657919Z             },
2026-06-19T23:28:15.7658044Z             {
2026-06-19T23:28:15.7658201Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7658328Z               "line": 6764
2026-06-19T23:28:15.7658453Z             },
2026-06-19T23:28:15.7658584Z             {
2026-06-19T23:28:15.7658741Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7658880Z               "line": 298
2026-06-19T23:28:15.7659076Z             },
2026-06-19T23:28:15.7659195Z             {
2026-06-19T23:28:15.7659366Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7659495Z               "line": 339
2026-06-19T23:28:15.7659618Z             }
2026-06-19T23:28:15.7659739Z           ]
2026-06-19T23:28:15.7659867Z         },
2026-06-19T23:28:15.7659991Z         "int": {
2026-06-19T23:28:15.7660120Z           "complete": true,
2026-06-19T23:28:15.7660248Z           "evidence": [
2026-06-19T23:28:15.7660373Z             {
2026-06-19T23:28:15.7660548Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7660688Z               "line": 706
2026-06-19T23:28:15.7660815Z             },
2026-06-19T23:28:15.7660941Z             {
2026-06-19T23:28:15.7661111Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7661243Z               "line": 778
2026-06-19T23:28:15.7661373Z             },
2026-06-19T23:28:15.7661496Z             {
2026-06-19T23:28:15.7661674Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7661816Z               "line": 1213
2026-06-19T23:28:15.7661941Z             },
2026-06-19T23:28:15.7662064Z             {
2026-06-19T23:28:15.7662250Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-19T23:28:15.7662388Z               "line": 18
2026-06-19T23:28:15.7662516Z             }
2026-06-19T23:28:15.7662646Z           ]
2026-06-19T23:28:15.7662774Z         },
2026-06-19T23:28:15.7662900Z         "unit": {
2026-06-19T23:28:15.7663046Z           "complete": true,
2026-06-19T23:28:15.7663170Z           "evidence": [
2026-06-19T23:28:15.7663304Z             {
2026-06-19T23:28:15.7663465Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7663603Z               "line": 744
2026-06-19T23:28:15.7663729Z             },
2026-06-19T23:28:15.7663844Z             {
2026-06-19T23:28:15.7664016Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-19T23:28:15.7664144Z               "line": 796
2026-06-19T23:28:15.7664273Z             },
2026-06-19T23:28:15.7664396Z             {
2026-06-19T23:28:15.7664574Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7664702Z               "line": 705
2026-06-19T23:28:15.7664827Z             },
2026-06-19T23:28:15.7664955Z             {
2026-06-19T23:28:15.7665127Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7665364Z               "line": 754
2026-06-19T23:28:15.7665490Z             },
2026-06-19T23:28:15.7665612Z             {
2026-06-19T23:28:15.7665781Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7665908Z               "line": 778
2026-06-19T23:28:15.7666033Z             },
2026-06-19T23:28:15.7666158Z             {
2026-06-19T23:28:15.7666322Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7666456Z               "line": 603
2026-06-19T23:28:15.7666582Z             },
2026-06-19T23:28:15.7666701Z             {
2026-06-19T23:28:15.7666869Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7667131Z               "line": 624
2026-06-19T23:28:15.7667254Z             },
2026-06-19T23:28:15.7667384Z             {
2026-06-19T23:28:15.7667555Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7667689Z               "line": 660
2026-06-19T23:28:15.7667812Z             },
2026-06-19T23:28:15.7667927Z             {
2026-06-19T23:28:15.7668104Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7668232Z               "line": 714
2026-06-19T23:28:15.7668357Z             },
2026-06-19T23:28:15.7668489Z             {
2026-06-19T23:28:15.7668657Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7668789Z               "line": 732
2026-06-19T23:28:15.7668907Z             },
2026-06-19T23:28:15.7669088Z             {
2026-06-19T23:28:15.7669268Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7669408Z               "line": 766
2026-06-19T23:28:15.7669544Z             },
2026-06-19T23:28:15.7669674Z             {
2026-06-19T23:28:15.7669850Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-19T23:28:15.7669975Z               "line": 841
2026-06-19T23:28:15.7670107Z             },
2026-06-19T23:28:15.7670222Z             {
2026-06-19T23:28:15.7670398Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-19T23:28:15.7670541Z               "line": 85
2026-06-19T23:28:15.7670660Z             },
2026-06-19T23:28:15.7670799Z             {
2026-06-19T23:28:15.7670948Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7671090Z               "line": 8016
2026-06-19T23:28:15.7671210Z             },
2026-06-19T23:28:15.7671328Z             {
2026-06-19T23:28:15.7671476Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7671605Z               "line": 9026
2026-06-19T23:28:15.7671737Z             },
2026-06-19T23:28:15.7671856Z             {
2026-06-19T23:28:15.7672014Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7672147Z               "line": 9096
2026-06-19T23:28:15.7672276Z             },
2026-06-19T23:28:15.7672404Z             {
2026-06-19T23:28:15.7672558Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7672695Z               "line": 9134
2026-06-19T23:28:15.7672820Z             }
2026-06-19T23:28:15.7672953Z           ]
2026-06-19T23:28:15.7673072Z         }
2026-06-19T23:28:15.7673192Z       }
2026-06-19T23:28:15.7673316Z     },
2026-06-19T23:28:15.7673435Z     {
2026-06-19T23:28:15.7673578Z       "id": "REQ-SHELL-3",
2026-06-19T23:28:15.7675468Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-19T23:28:15.7675624Z       "requiredStages": [
2026-06-19T23:28:15.7675754Z         "impl",
2026-06-19T23:28:15.7675992Z         "unit",
2026-06-19T23:28:15.7676125Z         "int"
2026-06-19T23:28:15.7676249Z       ],
2026-06-19T23:28:15.7676379Z       "stages": {
2026-06-19T23:28:15.7676511Z         "doc": {
2026-06-19T23:28:15.7676646Z           "complete": false,
2026-06-19T23:28:15.7676783Z           "evidence": []
2026-06-19T23:28:15.7676906Z         },
2026-06-19T23:28:15.7677035Z         "impl": {
2026-06-19T23:28:15.7677161Z           "complete": true,
2026-06-19T23:28:15.7677300Z           "evidence": [
2026-06-19T23:28:15.7677429Z             {
2026-06-19T23:28:15.7677595Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.7677729Z               "line": 229
2026-06-19T23:28:15.7677954Z             },
2026-06-19T23:28:15.7678083Z             {
2026-06-19T23:28:15.7678254Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7678391Z               "line": 36
2026-06-19T23:28:15.7678521Z             },
2026-06-19T23:28:15.7678640Z             {
2026-06-19T23:28:15.7678811Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7679025Z               "line": 137
2026-06-19T23:28:15.7679145Z             },
2026-06-19T23:28:15.7679266Z             {
2026-06-19T23:28:15.7679454Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7679611Z               "line": 153
2026-06-19T23:28:15.7679733Z             },
2026-06-19T23:28:15.7679861Z             {
2026-06-19T23:28:15.7680024Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7680157Z               "line": 165
2026-06-19T23:28:15.7680281Z             },
2026-06-19T23:28:15.7680400Z             {
2026-06-19T23:28:15.7680568Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7680695Z               "line": 242
2026-06-19T23:28:15.7680826Z             },
2026-06-19T23:28:15.7680949Z             {
2026-06-19T23:28:15.7681126Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7681254Z               "line": 267
2026-06-19T23:28:15.7681373Z             },
2026-06-19T23:28:15.7681503Z             {
2026-06-19T23:28:15.7681664Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7681804Z               "line": 293
2026-06-19T23:28:15.7681930Z             },
2026-06-19T23:28:15.7682061Z             {
2026-06-19T23:28:15.7682235Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-19T23:28:15.7682368Z               "line": 51
2026-06-19T23:28:15.7682493Z             },
2026-06-19T23:28:15.7682612Z             {
2026-06-19T23:28:15.7682784Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7682907Z               "line": 333
2026-06-19T23:28:15.7683037Z             },
2026-06-19T23:28:15.7683165Z             {
2026-06-19T23:28:15.7683332Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7683461Z               "line": 373
2026-06-19T23:28:15.7683589Z             },
2026-06-19T23:28:15.7683719Z             {
2026-06-19T23:28:15.7683890Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7684029Z               "line": 602
2026-06-19T23:28:15.7684152Z             },
2026-06-19T23:28:15.7684276Z             {
2026-06-19T23:28:15.7684439Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7684570Z               "line": 132
2026-06-19T23:28:15.7684704Z             },
2026-06-19T23:28:15.7684831Z             {
2026-06-19T23:28:15.7685007Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7685141Z               "line": 448
2026-06-19T23:28:15.7685269Z             },
2026-06-19T23:28:15.7685399Z             {
2026-06-19T23:28:15.7685569Z               "path": "crates/spt-proto/src/event.rs",
2026-06-19T23:28:15.7685699Z               "line": 74
2026-06-19T23:28:15.7685817Z             },
2026-06-19T23:28:15.7685948Z             {
2026-06-19T23:28:15.7686123Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7686361Z               "line": 594
2026-06-19T23:28:15.7686489Z             },
2026-06-19T23:28:15.7686610Z             {
2026-06-19T23:28:15.7686786Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7686925Z               "line": 392
2026-06-19T23:28:15.7687048Z             },
2026-06-19T23:28:15.7687173Z             {
2026-06-19T23:28:15.7687315Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7687442Z               "line": 6490
2026-06-19T23:28:15.7687557Z             }
2026-06-19T23:28:15.7687679Z           ]
2026-06-19T23:28:15.7687807Z         },
2026-06-19T23:28:15.7687932Z         "int": {
2026-06-19T23:28:15.7688064Z           "complete": true,
2026-06-19T23:28:15.7688294Z           "evidence": [
2026-06-19T23:28:15.7688422Z             {
2026-06-19T23:28:15.7688590Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7688727Z               "line": 1262
2026-06-19T23:28:15.7688852Z             },
2026-06-19T23:28:15.7689090Z             {
2026-06-19T23:28:15.7689271Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-19T23:28:15.7689400Z               "line": 17
2026-06-19T23:28:15.7689530Z             }
2026-06-19T23:28:15.7689658Z           ]
2026-06-19T23:28:15.7689783Z         },
2026-06-19T23:28:15.7689915Z         "unit": {
2026-06-19T23:28:15.7690042Z           "complete": true,
2026-06-19T23:28:15.7690181Z           "evidence": [
2026-06-19T23:28:15.7690298Z             {
2026-06-19T23:28:15.7690470Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7690603Z               "line": 311
2026-06-19T23:28:15.7690727Z             },
2026-06-19T23:28:15.7690861Z             {
2026-06-19T23:28:15.7691027Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7691151Z               "line": 325
2026-06-19T23:28:15.7691270Z             },
2026-06-19T23:28:15.7691395Z             {
2026-06-19T23:28:15.7691561Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7691700Z               "line": 343
2026-06-19T23:28:15.7691818Z             },
2026-06-19T23:28:15.7691943Z             {
2026-06-19T23:28:15.7692105Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7692238Z               "line": 364
2026-06-19T23:28:15.7692373Z             },
2026-06-19T23:28:15.7692495Z             {
2026-06-19T23:28:15.7692659Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-19T23:28:15.7692800Z               "line": 376
2026-06-19T23:28:15.7692923Z             },
2026-06-19T23:28:15.7693049Z             {
2026-06-19T23:28:15.7693215Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7693354Z               "line": 897
2026-06-19T23:28:15.7693477Z             },
2026-06-19T23:28:15.7693602Z             {
2026-06-19T23:28:15.7693773Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7693902Z               "line": 957
2026-06-19T23:28:15.7694021Z             },
2026-06-19T23:28:15.7694149Z             {
2026-06-19T23:28:15.7694317Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-19T23:28:15.7694445Z               "line": 338
2026-06-19T23:28:15.7694575Z             },
2026-06-19T23:28:15.7694702Z             {
2026-06-19T23:28:15.7694855Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.7694984Z               "line": 769
2026-06-19T23:28:15.7695098Z             },
2026-06-19T23:28:15.7695221Z             {
2026-06-19T23:28:15.7695372Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7695514Z               "line": 8808
2026-06-19T23:28:15.7695649Z             }
2026-06-19T23:28:15.7695772Z           ]
2026-06-19T23:28:15.7695906Z         }
2026-06-19T23:28:15.7696030Z       }
2026-06-19T23:28:15.7696154Z     },
2026-06-19T23:28:15.7696264Z     {
2026-06-19T23:28:15.7696406Z       "id": "REQ-SHELL-4",
2026-06-19T23:28:15.7698272Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-19T23:28:15.7698525Z       "requiredStages": [
2026-06-19T23:28:15.7698648Z         "doc",
2026-06-19T23:28:15.7702374Z         "impl",
2026-06-19T23:28:15.7702684Z         "unit",
2026-06-19T23:28:15.7702818Z         "int"
2026-06-19T23:28:15.7702943Z       ],
2026-06-19T23:28:15.7703080Z       "stages": {
2026-06-19T23:28:15.7703210Z         "doc": {
2026-06-19T23:28:15.7703351Z           "complete": true,
2026-06-19T23:28:15.7703493Z           "evidence": [
2026-06-19T23:28:15.7703609Z             {
2026-06-19T23:28:15.7703756Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7703885Z               "line": 281
2026-06-19T23:28:15.7704014Z             },
2026-06-19T23:28:15.7704137Z             {
2026-06-19T23:28:15.7704433Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-19T23:28:15.7704563Z               "line": 88
2026-06-19T23:28:15.7704690Z             }
2026-06-19T23:28:15.7704810Z           ]
2026-06-19T23:28:15.7704933Z         },
2026-06-19T23:28:15.7705062Z         "impl": {
2026-06-19T23:28:15.7705193Z           "complete": true,
2026-06-19T23:28:15.7705320Z           "evidence": [
2026-06-19T23:28:15.7705445Z             {
2026-06-19T23:28:15.7705620Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.7705753Z               "line": 243
2026-06-19T23:28:15.7705871Z             },
2026-06-19T23:28:15.7706003Z             {
2026-06-19T23:28:15.7706176Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-19T23:28:15.7706303Z               "line": 61
2026-06-19T23:28:15.7706428Z             },
2026-06-19T23:28:15.7706547Z             {
2026-06-19T23:28:15.7706719Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7706843Z               "line": 218
2026-06-19T23:28:15.7706976Z             },
2026-06-19T23:28:15.7707101Z             {
2026-06-19T23:28:15.7707271Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7707406Z               "line": 245
2026-06-19T23:28:15.7707529Z             },
2026-06-19T23:28:15.7707653Z             {
2026-06-19T23:28:15.7707820Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7707963Z               "line": 566
2026-06-19T23:28:15.7708088Z             },
2026-06-19T23:28:15.7708211Z             {
2026-06-19T23:28:15.7708379Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7708525Z               "line": 1141
2026-06-19T23:28:15.7708648Z             },
2026-06-19T23:28:15.7708780Z             {
2026-06-19T23:28:15.7709033Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7709175Z               "line": 1153
2026-06-19T23:28:15.7709295Z             },
2026-06-19T23:28:15.7709414Z             {
2026-06-19T23:28:15.7709576Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7709715Z               "line": 1194
2026-06-19T23:28:15.7709829Z             },
2026-06-19T23:28:15.7709963Z             {
2026-06-19T23:28:15.7710134Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7710269Z               "line": 456
2026-06-19T23:28:15.7710396Z             },
2026-06-19T23:28:15.7710525Z             {
2026-06-19T23:28:15.7710692Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7710815Z               "line": 44
2026-06-19T23:28:15.7710931Z             },
2026-06-19T23:28:15.7711063Z             {
2026-06-19T23:28:15.7711230Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7711475Z               "line": 208
2026-06-19T23:28:15.7711600Z             },
2026-06-19T23:28:15.7711733Z             {
2026-06-19T23:28:15.7711900Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7712043Z               "line": 227
2026-06-19T23:28:15.7712162Z             },
2026-06-19T23:28:15.7712277Z             {
2026-06-19T23:28:15.7712448Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7712572Z               "line": 253
2026-06-19T23:28:15.7712696Z             },
2026-06-19T23:28:15.7712816Z             {
2026-06-19T23:28:15.7712992Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7713249Z               "line": 272
2026-06-19T23:28:15.7713378Z             },
2026-06-19T23:28:15.7713508Z             {
2026-06-19T23:28:15.7713669Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7713808Z               "line": 392
2026-06-19T23:28:15.7713935Z             },
2026-06-19T23:28:15.7714058Z             {
2026-06-19T23:28:15.7714231Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7714359Z               "line": 421
2026-06-19T23:28:15.7714488Z             },
2026-06-19T23:28:15.7714616Z             {
2026-06-19T23:28:15.7714784Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7714926Z               "line": 439
2026-06-19T23:28:15.7715041Z             },
2026-06-19T23:28:15.7715165Z             {
2026-06-19T23:28:15.7715336Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7715461Z               "line": 458
2026-06-19T23:28:15.7715589Z             },
2026-06-19T23:28:15.7715714Z             {
2026-06-19T23:28:15.7715885Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7716005Z               "line": 486
2026-06-19T23:28:15.7716128Z             },
2026-06-19T23:28:15.7716251Z             {
2026-06-19T23:28:15.7716427Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7716559Z               "line": 613
2026-06-19T23:28:15.7716688Z             },
2026-06-19T23:28:15.7716811Z             {
2026-06-19T23:28:15.7716973Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7717108Z               "line": 818
2026-06-19T23:28:15.7717226Z             },
2026-06-19T23:28:15.7717346Z             {
2026-06-19T23:28:15.7717512Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7717642Z               "line": 431
2026-06-19T23:28:15.7717770Z             },
2026-06-19T23:28:15.7717893Z             {
2026-06-19T23:28:15.7718056Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7718180Z               "line": 6546
2026-06-19T23:28:15.7718305Z             }
2026-06-19T23:28:15.7718432Z           ]
2026-06-19T23:28:15.7718557Z         },
2026-06-19T23:28:15.7718685Z         "int": {
2026-06-19T23:28:15.7718814Z           "complete": true,
2026-06-19T23:28:15.7719037Z           "evidence": [
2026-06-19T23:28:15.7719160Z             {
2026-06-19T23:28:15.7719336Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-19T23:28:15.7719468Z               "line": 18
2026-06-19T23:28:15.7719598Z             }
2026-06-19T23:28:15.7719726Z           ]
2026-06-19T23:28:15.7719845Z         },
2026-06-19T23:28:15.7719965Z         "unit": {
2026-06-19T23:28:15.7720102Z           "complete": true,
2026-06-19T23:28:15.7720237Z           "evidence": [
2026-06-19T23:28:15.7720355Z             {
2026-06-19T23:28:15.7720524Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7720666Z               "line": 1391
2026-06-19T23:28:15.7720795Z             },
2026-06-19T23:28:15.7720914Z             {
2026-06-19T23:28:15.7721080Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7721210Z               "line": 1420
2026-06-19T23:28:15.7721338Z             },
2026-06-19T23:28:15.7721468Z             {
2026-06-19T23:28:15.7721766Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7721893Z               "line": 504
2026-06-19T23:28:15.7722016Z             },
2026-06-19T23:28:15.7722131Z             {
2026-06-19T23:28:15.7722298Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7722422Z               "line": 514
2026-06-19T23:28:15.7722551Z             },
2026-06-19T23:28:15.7722679Z             {
2026-06-19T23:28:15.7722846Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7722983Z               "line": 531
2026-06-19T23:28:15.7723114Z             },
2026-06-19T23:28:15.7723242Z             {
2026-06-19T23:28:15.7723513Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7723657Z               "line": 543
2026-06-19T23:28:15.7723786Z             },
2026-06-19T23:28:15.7723905Z             {
2026-06-19T23:28:15.7724073Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-19T23:28:15.7724205Z               "line": 555
2026-06-19T23:28:15.7724335Z             },
2026-06-19T23:28:15.7724467Z             {
2026-06-19T23:28:15.7724633Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.7724768Z               "line": 1134
2026-06-19T23:28:15.7724890Z             },
2026-06-19T23:28:15.7725015Z             {
2026-06-19T23:28:15.7725172Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.7725306Z               "line": 776
2026-06-19T23:28:15.7725430Z             }
2026-06-19T23:28:15.7725558Z           ]
2026-06-19T23:28:15.7725683Z         }
2026-06-19T23:28:15.7725806Z       }
2026-06-19T23:28:15.7725936Z     },
2026-06-19T23:28:15.7726059Z     {
2026-06-19T23:28:15.7726202Z       "id": "REQ-SHELL-5",
2026-06-19T23:28:15.7727538Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-19T23:28:15.7727696Z       "requiredStages": [
2026-06-19T23:28:15.7727824Z         "doc",
2026-06-19T23:28:15.7727948Z         "impl",
2026-06-19T23:28:15.7728081Z         "unit",
2026-06-19T23:28:15.7728207Z         "int"
2026-06-19T23:28:15.7728335Z       ],
2026-06-19T23:28:15.7728473Z       "stages": {
2026-06-19T23:28:15.7728601Z         "doc": {
2026-06-19T23:28:15.7728740Z           "complete": true,
2026-06-19T23:28:15.7728870Z           "evidence": [
2026-06-19T23:28:15.7729064Z             {
2026-06-19T23:28:15.7729204Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7729341Z               "line": 284
2026-06-19T23:28:15.7729471Z             }
2026-06-19T23:28:15.7729597Z           ]
2026-06-19T23:28:15.7729725Z         },
2026-06-19T23:28:15.7729854Z         "impl": {
2026-06-19T23:28:15.7729995Z           "complete": true,
2026-06-19T23:28:15.7730124Z           "evidence": [
2026-06-19T23:28:15.7730248Z             {
2026-06-19T23:28:15.7730435Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-19T23:28:15.7730558Z               "line": 260
2026-06-19T23:28:15.7730686Z             }
2026-06-19T23:28:15.7730806Z           ]
2026-06-19T23:28:15.7730925Z         },
2026-06-19T23:28:15.7731059Z         "int": {
2026-06-19T23:28:15.7731187Z           "complete": true,
2026-06-19T23:28:15.7731321Z           "evidence": [
2026-06-19T23:28:15.7731441Z             {
2026-06-19T23:28:15.7731607Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7731742Z               "line": 827
2026-06-19T23:28:15.7731864Z             },
2026-06-19T23:28:15.7731994Z             {
2026-06-19T23:28:15.7732160Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7732302Z               "line": 1290
2026-06-19T23:28:15.7732421Z             },
2026-06-19T23:28:15.7732653Z             {
2026-06-19T23:28:15.7732839Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-19T23:28:15.7732972Z               "line": 23
2026-06-19T23:28:15.7733101Z             }
2026-06-19T23:28:15.7733224Z           ]
2026-06-19T23:28:15.7733349Z         },
2026-06-19T23:28:15.7733478Z         "unit": {
2026-06-19T23:28:15.7733617Z           "complete": true,
2026-06-19T23:28:15.7733735Z           "evidence": [
2026-06-19T23:28:15.7733863Z             {
2026-06-19T23:28:15.7734031Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-19T23:28:15.7734164Z               "line": 803
2026-06-19T23:28:15.7734384Z             }
2026-06-19T23:28:15.7734498Z           ]
2026-06-19T23:28:15.7734623Z         }
2026-06-19T23:28:15.7734745Z       }
2026-06-19T23:28:15.7734866Z     },
2026-06-19T23:28:15.7734994Z     {
2026-06-19T23:28:15.7735135Z       "id": "REQ-START-1",
2026-06-19T23:28:15.7735384Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-19T23:28:15.7735522Z       "requiredStages": [
2026-06-19T23:28:15.7735656Z         "impl",
2026-06-19T23:28:15.7735784Z         "unit"
2026-06-19T23:28:15.7735914Z       ],
2026-06-19T23:28:15.7736051Z       "stages": {
2026-06-19T23:28:15.7736181Z         "doc": {
2026-06-19T23:28:15.7736323Z           "complete": false,
2026-06-19T23:28:15.7736457Z           "evidence": []
2026-06-19T23:28:15.7736577Z         },
2026-06-19T23:28:15.7736700Z         "impl": {
2026-06-19T23:28:15.7736844Z           "complete": true,
2026-06-19T23:28:15.7736985Z           "evidence": [
2026-06-19T23:28:15.7737105Z             {
2026-06-19T23:28:15.7737277Z               "path": "crates/spt-store/src/seed.rs",
2026-06-19T23:28:15.7737409Z               "line": 16
2026-06-19T23:28:15.7737529Z             }
2026-06-19T23:28:15.7737650Z           ]
2026-06-19T23:28:15.7737779Z         },
2026-06-19T23:28:15.7737914Z         "int": {
2026-06-19T23:28:15.7738046Z           "complete": false,
2026-06-19T23:28:15.7738175Z           "evidence": []
2026-06-19T23:28:15.7738298Z         },
2026-06-19T23:28:15.7738423Z         "unit": {
2026-06-19T23:28:15.7738552Z           "complete": true,
2026-06-19T23:28:15.7738680Z           "evidence": [
2026-06-19T23:28:15.7738805Z             {
2026-06-19T23:28:15.7739023Z               "path": "crates/spt-store/src/seed.rs",
2026-06-19T23:28:15.7739157Z               "line": 48
2026-06-19T23:28:15.7739276Z             },
2026-06-19T23:28:15.7739411Z             {
2026-06-19T23:28:15.7739572Z               "path": "crates/spt-store/src/seed.rs",
2026-06-19T23:28:15.7739697Z               "line": 63
2026-06-19T23:28:15.7739829Z             }
2026-06-19T23:28:15.7739954Z           ]
2026-06-19T23:28:15.7740079Z         }
2026-06-19T23:28:15.7740200Z       }
2026-06-19T23:28:15.7740324Z     },
2026-06-19T23:28:15.7740438Z     {
2026-06-19T23:28:15.7740565Z       "id": "REQ-START-2",
2026-06-19T23:28:15.7740766Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-19T23:28:15.7740894Z       "requiredStages": [
2026-06-19T23:28:15.7741014Z         "impl",
2026-06-19T23:28:15.7741133Z         "unit",
2026-06-19T23:28:15.7741271Z         "int"
2026-06-19T23:28:15.7741390Z       ],
2026-06-19T23:28:15.7741518Z       "stages": {
2026-06-19T23:28:15.7741644Z         "doc": {
2026-06-19T23:28:15.7741781Z           "complete": false,
2026-06-19T23:28:15.7741915Z           "evidence": []
2026-06-19T23:28:15.7742038Z         },
2026-06-19T23:28:15.7742167Z         "impl": {
2026-06-19T23:28:15.7742297Z           "complete": true,
2026-06-19T23:28:15.7742434Z           "evidence": [
2026-06-19T23:28:15.7742559Z             {
2026-06-19T23:28:15.7742729Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7742862Z               "line": 16
2026-06-19T23:28:15.7742985Z             },
2026-06-19T23:28:15.7743108Z             {
2026-06-19T23:28:15.7743270Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7743518Z               "line": 115
2026-06-19T23:28:15.7743647Z             },
2026-06-19T23:28:15.7743775Z             {
2026-06-19T23:28:15.7743938Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7744061Z               "line": 296
2026-06-19T23:28:15.7744182Z             }
2026-06-19T23:28:15.7744310Z           ]
2026-06-19T23:28:15.7744433Z         },
2026-06-19T23:28:15.7744553Z         "int": {
2026-06-19T23:28:15.7744682Z           "complete": true,
2026-06-19T23:28:15.7744811Z           "evidence": [
2026-06-19T23:28:15.7744939Z             {
2026-06-19T23:28:15.7745116Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.7745335Z               "line": 186
2026-06-19T23:28:15.7745460Z             }
2026-06-19T23:28:15.7745592Z           ]
2026-06-19T23:28:15.7745710Z         },
2026-06-19T23:28:15.7745840Z         "unit": {
2026-06-19T23:28:15.7745973Z           "complete": true,
2026-06-19T23:28:15.7746111Z           "evidence": [
2026-06-19T23:28:15.7746236Z             {
2026-06-19T23:28:15.7746407Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7746540Z               "line": 586
2026-06-19T23:28:15.7746668Z             },
2026-06-19T23:28:15.7746789Z             {
2026-06-19T23:28:15.7746940Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7747075Z               "line": 619
2026-06-19T23:28:15.7747198Z             }
2026-06-19T23:28:15.7747322Z           ]
2026-06-19T23:28:15.7747451Z         }
2026-06-19T23:28:15.7747575Z       }
2026-06-19T23:28:15.7747700Z     },
2026-06-19T23:28:15.7747822Z     {
2026-06-19T23:28:15.7747951Z       "id": "REQ-START-3",
2026-06-19T23:28:15.7748177Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-19T23:28:15.7748325Z       "requiredStages": [
2026-06-19T23:28:15.7748445Z         "impl",
2026-06-19T23:28:15.7748567Z         "unit",
2026-06-19T23:28:15.7748692Z         "int"
2026-06-19T23:28:15.7748811Z       ],
2026-06-19T23:28:15.7749012Z       "stages": {
2026-06-19T23:28:15.7749140Z         "doc": {
2026-06-19T23:28:15.7749284Z           "complete": false,
2026-06-19T23:28:15.7749421Z           "evidence": []
2026-06-19T23:28:15.7749545Z         },
2026-06-19T23:28:15.7749665Z         "impl": {
2026-06-19T23:28:15.7749803Z           "complete": true,
2026-06-19T23:28:15.7749942Z           "evidence": [
2026-06-19T23:28:15.7750070Z             {
2026-06-19T23:28:15.7750233Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.7750371Z               "line": 23
2026-06-19T23:28:15.7750494Z             },
2026-06-19T23:28:15.7750615Z             {
2026-06-19T23:28:15.7750784Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.7750913Z               "line": 205
2026-06-19T23:28:15.7751031Z             },
2026-06-19T23:28:15.7751154Z             {
2026-06-19T23:28:15.7751326Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.7751454Z               "line": 221
2026-06-19T23:28:15.7751584Z             },
2026-06-19T23:28:15.7751707Z             {
2026-06-19T23:28:15.7751865Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7751989Z               "line": 17
2026-06-19T23:28:15.7752112Z             },
2026-06-19T23:28:15.7752232Z             {
2026-06-19T23:28:15.7752388Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7752523Z               "line": 35
2026-06-19T23:28:15.7752650Z             },
2026-06-19T23:28:15.7752775Z             {
2026-06-19T23:28:15.7752941Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7753080Z               "line": 116
2026-06-19T23:28:15.7753201Z             }
2026-06-19T23:28:15.7753322Z           ]
2026-06-19T23:28:15.7753446Z         },
2026-06-19T23:28:15.7753564Z         "int": {
2026-06-19T23:28:15.7753696Z           "complete": true,
2026-06-19T23:28:15.7753831Z           "evidence": [
2026-06-19T23:28:15.7753954Z             {
2026-06-19T23:28:15.7754259Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-19T23:28:15.7754388Z               "line": 488
2026-06-19T23:28:15.7754512Z             }
2026-06-19T23:28:15.7754636Z           ]
2026-06-19T23:28:15.7754761Z         },
2026-06-19T23:28:15.7754894Z         "unit": {
2026-06-19T23:28:15.7755032Z           "complete": true,
2026-06-19T23:28:15.7755170Z           "evidence": [
2026-06-19T23:28:15.7755289Z             {
2026-06-19T23:28:15.7755461Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.7755589Z               "line": 381
2026-06-19T23:28:15.7755715Z             },
2026-06-19T23:28:15.7755837Z             {
2026-06-19T23:28:15.7756105Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.7756246Z               "line": 402
2026-06-19T23:28:15.7756362Z             },
2026-06-19T23:28:15.7756495Z             {
2026-06-19T23:28:15.7756662Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-19T23:28:15.7756796Z               "line": 412
2026-06-19T23:28:15.7756913Z             },
2026-06-19T23:28:15.7757044Z             {
2026-06-19T23:28:15.7757205Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7757339Z               "line": 587
2026-06-19T23:28:15.7757468Z             },
2026-06-19T23:28:15.7757582Z             {
2026-06-19T23:28:15.7757739Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7757877Z               "line": 620
2026-06-19T23:28:15.7758002Z             },
2026-06-19T23:28:15.7758125Z             {
2026-06-19T23:28:15.7758289Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7758411Z               "line": 653
2026-06-19T23:28:15.7758539Z             }
2026-06-19T23:28:15.7758658Z           ]
2026-06-19T23:28:15.7758784Z         }
2026-06-19T23:28:15.7758904Z       }
2026-06-19T23:28:15.7759099Z     },
2026-06-19T23:28:15.7759219Z     {
2026-06-19T23:28:15.7759371Z       "id": "REQ-START-4",
2026-06-19T23:28:15.7759587Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-19T23:28:15.7759724Z       "requiredStages": [
2026-06-19T23:28:15.7759864Z         "impl",
2026-06-19T23:28:15.7759986Z         "unit"
2026-06-19T23:28:15.7760105Z       ],
2026-06-19T23:28:15.7760230Z       "stages": {
2026-06-19T23:28:15.7760363Z         "doc": {
2026-06-19T23:28:15.7760498Z           "complete": false,
2026-06-19T23:28:15.7760630Z           "evidence": []
2026-06-19T23:28:15.7760749Z         },
2026-06-19T23:28:15.7760879Z         "impl": {
2026-06-19T23:28:15.7761021Z           "complete": true,
2026-06-19T23:28:15.7761147Z           "evidence": [
2026-06-19T23:28:15.7761269Z             {
2026-06-19T23:28:15.7761444Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7761577Z               "line": 581
2026-06-19T23:28:15.7761699Z             }
2026-06-19T23:28:15.7761814Z           ]
2026-06-19T23:28:15.7761943Z         },
2026-06-19T23:28:15.7762071Z         "int": {
2026-06-19T23:28:15.7762210Z           "complete": false,
2026-06-19T23:28:15.7762338Z           "evidence": []
2026-06-19T23:28:15.7762468Z         },
2026-06-19T23:28:15.7762592Z         "unit": {
2026-06-19T23:28:15.7762730Z           "complete": true,
2026-06-19T23:28:15.7762853Z           "evidence": [
2026-06-19T23:28:15.7762977Z             {
2026-06-19T23:28:15.7763145Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7763273Z               "line": 1022
2026-06-19T23:28:15.7763398Z             }
2026-06-19T23:28:15.7763516Z           ]
2026-06-19T23:28:15.7763636Z         }
2026-06-19T23:28:15.7763761Z       }
2026-06-19T23:28:15.7763887Z     },
2026-06-19T23:28:15.7764016Z     {
2026-06-19T23:28:15.7764153Z       "id": "REQ-START-5",
2026-06-19T23:28:15.7767059Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-19T23:28:15.7767426Z       "requiredStages": [
2026-06-19T23:28:15.7767557Z         "doc",
2026-06-19T23:28:15.7767685Z         "impl",
2026-06-19T23:28:15.7767818Z         "unit",
2026-06-19T23:28:15.7767942Z         "int"
2026-06-19T23:28:15.7768070Z       ],
2026-06-19T23:28:15.7768191Z       "stages": {
2026-06-19T23:28:15.7768323Z         "doc": {
2026-06-19T23:28:15.7768452Z           "complete": true,
2026-06-19T23:28:15.7768576Z           "evidence": [
2026-06-19T23:28:15.7768704Z             {
2026-06-19T23:28:15.7768845Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.7769061Z               "line": 176
2026-06-19T23:28:15.7769185Z             },
2026-06-19T23:28:15.7769307Z             {
2026-06-19T23:28:15.7769546Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-19T23:28:15.7769683Z               "line": 28
2026-06-19T23:28:15.7769808Z             }
2026-06-19T23:28:15.7769931Z           ]
2026-06-19T23:28:15.7770060Z         },
2026-06-19T23:28:15.7770180Z         "impl": {
2026-06-19T23:28:15.7770313Z           "complete": true,
2026-06-19T23:28:15.7770442Z           "evidence": [
2026-06-19T23:28:15.7770575Z             {
2026-06-19T23:28:15.7770748Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.7770876Z               "line": 26
2026-06-19T23:28:15.7771009Z             },
2026-06-19T23:28:15.7771134Z             {
2026-06-19T23:28:15.7771314Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.7771449Z               "line": 212
2026-06-19T23:28:15.7771567Z             },
2026-06-19T23:28:15.7771692Z             {
2026-06-19T23:28:15.7771853Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.7771985Z               "line": 221
2026-06-19T23:28:15.7772109Z             },
2026-06-19T23:28:15.7772235Z             {
2026-06-19T23:28:15.7772399Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.7772522Z               "line": 485
2026-06-19T23:28:15.7772651Z             },
2026-06-19T23:28:15.7772775Z             {
2026-06-19T23:28:15.7772946Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7773076Z               "line": 36
2026-06-19T23:28:15.7773198Z             },
2026-06-19T23:28:15.7773328Z             {
2026-06-19T23:28:15.7773490Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7773624Z               "line": 118
2026-06-19T23:28:15.7773752Z             },
2026-06-19T23:28:15.7773876Z             {
2026-06-19T23:28:15.7774030Z               "path": "crates/spt/src/api/startup.rs",
2026-06-19T23:28:15.7774162Z               "line": 325
2026-06-19T23:28:15.7774283Z             }
2026-06-19T23:28:15.7774400Z           ]
2026-06-19T23:28:15.7774514Z         },
2026-06-19T23:28:15.7774643Z         "int": {
2026-06-19T23:28:15.7774783Z           "complete": true,
2026-06-19T23:28:15.7774912Z           "evidence": [
2026-06-19T23:28:15.7775037Z             {
2026-06-19T23:28:15.7775218Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-19T23:28:15.7775352Z               "line": 17
2026-06-19T23:28:15.7775480Z             }
2026-06-19T23:28:15.7775604Z           ]
2026-06-19T23:28:15.7775727Z         },
2026-06-19T23:28:15.7775852Z         "unit": {
2026-06-19T23:28:15.7775999Z           "complete": true,
2026-06-19T23:28:15.7776248Z           "evidence": [
2026-06-19T23:28:15.7776366Z             {
2026-06-19T23:28:15.7776535Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.7776657Z               "line": 358
2026-06-19T23:28:15.7776787Z             },
2026-06-19T23:28:15.7776906Z             {
2026-06-19T23:28:15.7777073Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-19T23:28:15.7777212Z               "line": 371
2026-06-19T23:28:15.7777334Z             },
2026-06-19T23:28:15.7777457Z             {
2026-06-19T23:28:15.7777605Z               "path": "crates/spt/src/api/mod.rs",
2026-06-19T23:28:15.7777738Z               "line": 597
2026-06-19T23:28:15.7777958Z             }
2026-06-19T23:28:15.7778087Z           ]
2026-06-19T23:28:15.7778211Z         }
2026-06-19T23:28:15.7778335Z       }
2026-06-19T23:28:15.7778460Z     },
2026-06-19T23:28:15.7778574Z     {
2026-06-19T23:28:15.7778712Z       "id": "REQ-STORE-1",
2026-06-19T23:28:15.7779755Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-19T23:28:15.7779905Z       "requiredStages": [
2026-06-19T23:28:15.7780029Z         "impl",
2026-06-19T23:28:15.7780149Z         "unit"
2026-06-19T23:28:15.7780281Z       ],
2026-06-19T23:28:15.7780402Z       "stages": {
2026-06-19T23:28:15.7780534Z         "doc": {
2026-06-19T23:28:15.7780674Z           "complete": false,
2026-06-19T23:28:15.7780811Z           "evidence": []
2026-06-19T23:28:15.7780935Z         },
2026-06-19T23:28:15.7781064Z         "impl": {
2026-06-19T23:28:15.7781197Z           "complete": true,
2026-06-19T23:28:15.7781327Z           "evidence": [
2026-06-19T23:28:15.7781450Z             {
2026-06-19T23:28:15.7781628Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7781755Z               "line": 23
2026-06-19T23:28:15.7781889Z             },
2026-06-19T23:28:15.7782013Z             {
2026-06-19T23:28:15.7782189Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7782319Z               "line": 46
2026-06-19T23:28:15.7782450Z             },
2026-06-19T23:28:15.7782579Z             {
2026-06-19T23:28:15.7782753Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7782887Z               "line": 97
2026-06-19T23:28:15.7783006Z             },
2026-06-19T23:28:15.7783134Z             {
2026-06-19T23:28:15.7783302Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7783502Z               "line": 125
2026-06-19T23:28:15.7783631Z             },
2026-06-19T23:28:15.7783754Z             {
2026-06-19T23:28:15.7783927Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7784060Z               "line": 207
2026-06-19T23:28:15.7784251Z             },
2026-06-19T23:28:15.7784389Z             {
2026-06-19T23:28:15.7784580Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7784722Z               "line": 231
2026-06-19T23:28:15.7784847Z             },
2026-06-19T23:28:15.7784975Z             {
2026-06-19T23:28:15.7785151Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7785296Z               "line": 467
2026-06-19T23:28:15.7785439Z             },
2026-06-19T23:28:15.7785583Z             {
2026-06-19T23:28:15.7785763Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7785917Z               "line": 25
2026-06-19T23:28:15.7786054Z             },
2026-06-19T23:28:15.7786179Z             {
2026-06-19T23:28:15.7786373Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7786512Z               "line": 120
2026-06-19T23:28:15.7786640Z             },
2026-06-19T23:28:15.7786766Z             {
2026-06-19T23:28:15.7786945Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7787179Z               "line": 148
2026-06-19T23:28:15.7787308Z             },
2026-06-19T23:28:15.7787443Z             {
2026-06-19T23:28:15.7787608Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7787753Z               "line": 165
2026-06-19T23:28:15.7787879Z             },
2026-06-19T23:28:15.7787999Z             {
2026-06-19T23:28:15.7788175Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7788318Z               "line": 180
2026-06-19T23:28:15.7788462Z             },
2026-06-19T23:28:15.7788585Z             {
2026-06-19T23:28:15.7788856Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7789053Z               "line": 198
2026-06-19T23:28:15.7789180Z             },
2026-06-19T23:28:15.7789301Z             {
2026-06-19T23:28:15.7789472Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7789602Z               "line": 207
2026-06-19T23:28:15.7789715Z             },
2026-06-19T23:28:15.7789834Z             {
2026-06-19T23:28:15.7789993Z               "path": "crates/spt-store/src/project.rs",
2026-06-19T23:28:15.7790115Z               "line": 16
2026-06-19T23:28:15.7790243Z             },
2026-06-19T23:28:15.7790371Z             {
2026-06-19T23:28:15.7790536Z               "path": "crates/spt-store/src/project.rs",
2026-06-19T23:28:15.7790671Z               "line": 63
2026-06-19T23:28:15.7790794Z             }
2026-06-19T23:28:15.7790923Z           ]
2026-06-19T23:28:15.7791038Z         },
2026-06-19T23:28:15.7791156Z         "int": {
2026-06-19T23:28:15.7791291Z           "complete": false,
2026-06-19T23:28:15.7791438Z           "evidence": []
2026-06-19T23:28:15.7791596Z         },
2026-06-19T23:28:15.7791724Z         "unit": {
2026-06-19T23:28:15.7791868Z           "complete": true,
2026-06-19T23:28:15.7792001Z           "evidence": [
2026-06-19T23:28:15.7792124Z             {
2026-06-19T23:28:15.7792329Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7792459Z               "line": 584
2026-06-19T23:28:15.7792587Z             },
2026-06-19T23:28:15.7792721Z             {
2026-06-19T23:28:15.7792898Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7793034Z               "line": 594
2026-06-19T23:28:15.7793149Z             },
2026-06-19T23:28:15.7793280Z             {
2026-06-19T23:28:15.7793451Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7793576Z               "line": 616
2026-06-19T23:28:15.7793703Z             },
2026-06-19T23:28:15.7793824Z             {
2026-06-19T23:28:15.7794004Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7794129Z               "line": 632
2026-06-19T23:28:15.7794253Z             },
2026-06-19T23:28:15.7794377Z             {
2026-06-19T23:28:15.7794553Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-19T23:28:15.7794682Z               "line": 690
2026-06-19T23:28:15.7794811Z             },
2026-06-19T23:28:15.7794930Z             {
2026-06-19T23:28:15.7795097Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7795225Z               "line": 472
2026-06-19T23:28:15.7795350Z             },
2026-06-19T23:28:15.7795469Z             {
2026-06-19T23:28:15.7795639Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-19T23:28:15.7795782Z               "line": 507
2026-06-19T23:28:15.7795913Z             },
2026-06-19T23:28:15.7796028Z             {
2026-06-19T23:28:15.7796200Z               "path": "crates/spt-store/src/project.rs",
2026-06-19T23:28:15.7796328Z               "line": 120
2026-06-19T23:28:15.7796457Z             },
2026-06-19T23:28:15.7800632Z             {
2026-06-19T23:28:15.7800866Z               "path": "crates/spt-store/src/project.rs",
2026-06-19T23:28:15.7801011Z               "line": 128
2026-06-19T23:28:15.7801130Z             }
2026-06-19T23:28:15.7801265Z           ]
2026-06-19T23:28:15.7801673Z         }
2026-06-19T23:28:15.7801799Z       }
2026-06-19T23:28:15.7801922Z     },
2026-06-19T23:28:15.7802045Z     {
2026-06-19T23:28:15.7802189Z       "id": "REQ-SUBNET-1",
2026-06-19T23:28:15.7802575Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-19T23:28:15.7802724Z       "requiredStages": [
2026-06-19T23:28:15.7802846Z         "impl",
2026-06-19T23:28:15.7802975Z         "unit"
2026-06-19T23:28:15.7803096Z       ],
2026-06-19T23:28:15.7803228Z       "stages": {
2026-06-19T23:28:15.7803353Z         "doc": {
2026-06-19T23:28:15.7803495Z           "complete": false,
2026-06-19T23:28:15.7803728Z           "evidence": []
2026-06-19T23:28:15.7803849Z         },
2026-06-19T23:28:15.7803973Z         "impl": {
2026-06-19T23:28:15.7804108Z           "complete": true,
2026-06-19T23:28:15.7804236Z           "evidence": [
2026-06-19T23:28:15.7804356Z             {
2026-06-19T23:28:15.7804541Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7804680Z               "line": 281
2026-06-19T23:28:15.7804808Z             },
2026-06-19T23:28:15.7804937Z             {
2026-06-19T23:28:15.7805118Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7805256Z               "line": 651
2026-06-19T23:28:15.7805385Z             },
2026-06-19T23:28:15.7805504Z             {
2026-06-19T23:28:15.7805662Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7805780Z               "line": 3371
2026-06-19T23:28:15.7805915Z             },
2026-06-19T23:28:15.7806029Z             {
2026-06-19T23:28:15.7806189Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7806318Z               "line": 3681
2026-06-19T23:28:15.7806440Z             },
2026-06-19T23:28:15.7806569Z             {
2026-06-19T23:28:15.7806750Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7806893Z               "line": 3700
2026-06-19T23:28:15.7807060Z             },
2026-06-19T23:28:15.7807184Z             {
2026-06-19T23:28:15.7807332Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7807460Z               "line": 3764
2026-06-19T23:28:15.7807590Z             },
2026-06-19T23:28:15.7807718Z             {
2026-06-19T23:28:15.7807867Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7808009Z               "line": 3806
2026-06-19T23:28:15.7808128Z             },
2026-06-19T23:28:15.7808257Z             {
2026-06-19T23:28:15.7808404Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7808539Z               "line": 3995
2026-06-19T23:28:15.7808661Z             },
2026-06-19T23:28:15.7808782Z             {
2026-06-19T23:28:15.7809023Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7809152Z               "line": 4065
2026-06-19T23:28:15.7809291Z             },
2026-06-19T23:28:15.7809428Z             {
2026-06-19T23:28:15.7809582Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7809719Z               "line": 4289
2026-06-19T23:28:15.7809849Z             },
2026-06-19T23:28:15.7809972Z             {
2026-06-19T23:28:15.7810121Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7810259Z               "line": 4933
2026-06-19T23:28:15.7810373Z             },
2026-06-19T23:28:15.7810503Z             {
2026-06-19T23:28:15.7810654Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7810789Z               "line": 418
2026-06-19T23:28:15.7810916Z             }
2026-06-19T23:28:15.7811041Z           ]
2026-06-19T23:28:15.7811169Z         },
2026-06-19T23:28:15.7811288Z         "int": {
2026-06-19T23:28:15.7811430Z           "complete": false,
2026-06-19T23:28:15.7811561Z           "evidence": []
2026-06-19T23:28:15.7811695Z         },
2026-06-19T23:28:15.7811830Z         "unit": {
2026-06-19T23:28:15.7811966Z           "complete": true,
2026-06-19T23:28:15.7812110Z           "evidence": [
2026-06-19T23:28:15.7812233Z             {
2026-06-19T23:28:15.7812520Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7812649Z               "line": 1584
2026-06-19T23:28:15.7812778Z             },
2026-06-19T23:28:15.7812906Z             {
2026-06-19T23:28:15.7813059Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7813187Z               "line": 9936
2026-06-19T23:28:15.7813313Z             },
2026-06-19T23:28:15.7813435Z             {
2026-06-19T23:28:15.7813584Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7813712Z               "line": 10106
2026-06-19T23:28:15.7813841Z             },
2026-06-19T23:28:15.7813961Z             {
2026-06-19T23:28:15.7814216Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7814349Z               "line": 10113
2026-06-19T23:28:15.7814467Z             },
2026-06-19T23:28:15.7814591Z             {
2026-06-19T23:28:15.7814738Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7814882Z               "line": 10166
2026-06-19T23:28:15.7815006Z             },
2026-06-19T23:28:15.7815134Z             {
2026-06-19T23:28:15.7815283Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7815415Z               "line": 10183
2026-06-19T23:28:15.7815540Z             },
2026-06-19T23:28:15.7815659Z             {
2026-06-19T23:28:15.7815811Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7815941Z               "line": 10213
2026-06-19T23:28:15.7816078Z             },
2026-06-19T23:28:15.7816199Z             {
2026-06-19T23:28:15.7816350Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7816499Z               "line": 10329
2026-06-19T23:28:15.7816622Z             },
2026-06-19T23:28:15.7816744Z             {
2026-06-19T23:28:15.7816897Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7817029Z               "line": 10480
2026-06-19T23:28:15.7817153Z             }
2026-06-19T23:28:15.7817277Z           ]
2026-06-19T23:28:15.7817400Z         }
2026-06-19T23:28:15.7817535Z       }
2026-06-19T23:28:15.7817663Z     },
2026-06-19T23:28:15.7817783Z     {
2026-06-19T23:28:15.7817925Z       "id": "REQ-SUBNET-2",
2026-06-19T23:28:15.7818235Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-19T23:28:15.7818402Z       "requiredStages": [
2026-06-19T23:28:15.7818522Z         "impl",
2026-06-19T23:28:15.7818650Z         "unit",
2026-06-19T23:28:15.7818780Z         "int"
2026-06-19T23:28:15.7818898Z       ],
2026-06-19T23:28:15.7819109Z       "stages": {
2026-06-19T23:28:15.7819231Z         "doc": {
2026-06-19T23:28:15.7819371Z           "complete": true,
2026-06-19T23:28:15.7819499Z           "evidence": [
2026-06-19T23:28:15.7819645Z             {
2026-06-19T23:28:15.7819851Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-19T23:28:15.7819975Z               "line": 60
2026-06-19T23:28:15.7820104Z             }
2026-06-19T23:28:15.7820232Z           ]
2026-06-19T23:28:15.7820361Z         },
2026-06-19T23:28:15.7820495Z         "impl": {
2026-06-19T23:28:15.7820632Z           "complete": true,
2026-06-19T23:28:15.7820762Z           "evidence": [
2026-06-19T23:28:15.7820880Z             {
2026-06-19T23:28:15.7821043Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.7821172Z               "line": 838
2026-06-19T23:28:15.7821302Z             },
2026-06-19T23:28:15.7821424Z             {
2026-06-19T23:28:15.7821591Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.7821725Z               "line": 1768
2026-06-19T23:28:15.7821852Z             },
2026-06-19T23:28:15.7821986Z             {
2026-06-19T23:28:15.7822155Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7822298Z               "line": 633
2026-06-19T23:28:15.7822432Z             },
2026-06-19T23:28:15.7822555Z             {
2026-06-19T23:28:15.7822723Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-19T23:28:15.7822851Z               "line": 817
2026-06-19T23:28:15.7823085Z             },
2026-06-19T23:28:15.7823200Z             {
2026-06-19T23:28:15.7823381Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7823514Z               "line": 26
2026-06-19T23:28:15.7823638Z             },
2026-06-19T23:28:15.7823762Z             {
2026-06-19T23:28:15.7823930Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7824062Z               "line": 60
2026-06-19T23:28:15.7824187Z             },
2026-06-19T23:28:15.7824310Z             {
2026-06-19T23:28:15.7824483Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7824616Z               "line": 168
2026-06-19T23:28:15.7824838Z             },
2026-06-19T23:28:15.7824961Z             {
2026-06-19T23:28:15.7825137Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7825271Z               "line": 295
2026-06-19T23:28:15.7825394Z             },
2026-06-19T23:28:15.7825519Z             {
2026-06-19T23:28:15.7825694Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7825824Z               "line": 417
2026-06-19T23:28:15.7825947Z             },
2026-06-19T23:28:15.7826071Z             {
2026-06-19T23:28:15.7826253Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-19T23:28:15.7826391Z               "line": 252
2026-06-19T23:28:15.7826510Z             },
2026-06-19T23:28:15.7826624Z             {
2026-06-19T23:28:15.7826778Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7826910Z               "line": 3727
2026-06-19T23:28:15.7827026Z             },
2026-06-19T23:28:15.7827149Z             {
2026-06-19T23:28:15.7827304Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7827434Z               "line": 4228
2026-06-19T23:28:15.7827560Z             },
2026-06-19T23:28:15.7827689Z             {
2026-06-19T23:28:15.7827842Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7827980Z               "line": 4864
2026-06-19T23:28:15.7828105Z             }
2026-06-19T23:28:15.7828247Z           ]
2026-06-19T23:28:15.7828372Z         },
2026-06-19T23:28:15.7828495Z         "int": {
2026-06-19T23:28:15.7828643Z           "complete": true,
2026-06-19T23:28:15.7828781Z           "evidence": [
2026-06-19T23:28:15.7828900Z             {
2026-06-19T23:28:15.7829172Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-19T23:28:15.7829307Z               "line": 22
2026-06-19T23:28:15.7829434Z             },
2026-06-19T23:28:15.7829563Z             {
2026-06-19T23:28:15.7829730Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7829863Z               "line": 645
2026-06-19T23:28:15.7829984Z             },
2026-06-19T23:28:15.7830111Z             {
2026-06-19T23:28:15.7830287Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.7830425Z               "line": 887
2026-06-19T23:28:15.7830549Z             }
2026-06-19T23:28:15.7830688Z           ]
2026-06-19T23:28:15.7830820Z         },
2026-06-19T23:28:15.7830950Z         "unit": {
2026-06-19T23:28:15.7831092Z           "complete": true,
2026-06-19T23:28:15.7831222Z           "evidence": [
2026-06-19T23:28:15.7831345Z             {
2026-06-19T23:28:15.7831512Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7831651Z               "line": 586
2026-06-19T23:28:15.7831774Z             },
2026-06-19T23:28:15.7831899Z             {
2026-06-19T23:28:15.7832061Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7832200Z               "line": 9976
2026-06-19T23:28:15.7832327Z             },
2026-06-19T23:28:15.7832450Z             {
2026-06-19T23:28:15.7832612Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7832743Z               "line": 10687
2026-06-19T23:28:15.7832873Z             }
2026-06-19T23:28:15.7833001Z           ]
2026-06-19T23:28:15.7833125Z         }
2026-06-19T23:28:15.7833254Z       }
2026-06-19T23:28:15.7833382Z     },
2026-06-19T23:28:15.7833612Z     {
2026-06-19T23:28:15.7833750Z       "id": "REQ-SUBNET-3",
2026-06-19T23:28:15.7834074Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-19T23:28:15.7834217Z       "requiredStages": [
2026-06-19T23:28:15.7834350Z         "impl",
2026-06-19T23:28:15.7834481Z         "unit"
2026-06-19T23:28:15.7834604Z       ],
2026-06-19T23:28:15.7834734Z       "stages": {
2026-06-19T23:28:15.7834861Z         "doc": {
2026-06-19T23:28:15.7835005Z           "complete": false,
2026-06-19T23:28:15.7835148Z           "evidence": []
2026-06-19T23:28:15.7835270Z         },
2026-06-19T23:28:15.7835394Z         "impl": {
2026-06-19T23:28:15.7835653Z           "complete": true,
2026-06-19T23:28:15.7835788Z           "evidence": [
2026-06-19T23:28:15.7835911Z             {
2026-06-19T23:28:15.7836093Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7836225Z               "line": 152
2026-06-19T23:28:15.7836356Z             },
2026-06-19T23:28:15.7836484Z             {
2026-06-19T23:28:15.7836656Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7836788Z               "line": 299
2026-06-19T23:28:15.7836913Z             },
2026-06-19T23:28:15.7837047Z             {
2026-06-19T23:28:15.7837228Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7837357Z               "line": 443
2026-06-19T23:28:15.7837485Z             },
2026-06-19T23:28:15.7837601Z             {
2026-06-19T23:28:15.7837789Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7837913Z               "line": 532
2026-06-19T23:28:15.7838041Z             },
2026-06-19T23:28:15.7838177Z             {
2026-06-19T23:28:15.7838345Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7838478Z               "line": 125
2026-06-19T23:28:15.7838588Z             },
2026-06-19T23:28:15.7838717Z             {
2026-06-19T23:28:15.7838884Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7839126Z               "line": 253
2026-06-19T23:28:15.7839256Z             },
2026-06-19T23:28:15.7839384Z             {
2026-06-19T23:28:15.7839552Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7839694Z               "line": 264
2026-06-19T23:28:15.7839818Z             },
2026-06-19T23:28:15.7839942Z             {
2026-06-19T23:28:15.7840113Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7840238Z               "line": 285
2026-06-19T23:28:15.7840357Z             },
2026-06-19T23:28:15.7840482Z             {
2026-06-19T23:28:15.7840651Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7840794Z               "line": 621
2026-06-19T23:28:15.7840915Z             },
2026-06-19T23:28:15.7841042Z             {
2026-06-19T23:28:15.7841215Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7841347Z               "line": 680
2026-06-19T23:28:15.7841473Z             },
2026-06-19T23:28:15.7841596Z             {
2026-06-19T23:28:15.7841777Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.7841906Z               "line": 61
2026-06-19T23:28:15.7842029Z             },
2026-06-19T23:28:15.7842159Z             {
2026-06-19T23:28:15.7842330Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.7842455Z               "line": 90
2026-06-19T23:28:15.7842582Z             },
2026-06-19T23:28:15.7842707Z             {
2026-06-19T23:28:15.7842897Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.7843034Z               "line": 125
2026-06-19T23:28:15.7843162Z             },
2026-06-19T23:28:15.7843275Z             {
2026-06-19T23:28:15.7843471Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-19T23:28:15.7843604Z               "line": 9
2026-06-19T23:28:15.7843753Z             },
2026-06-19T23:28:15.7843886Z             {
2026-06-19T23:28:15.7844163Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7844310Z               "line": 4065
2026-06-19T23:28:15.7844430Z             },
2026-06-19T23:28:15.7844548Z             {
2026-06-19T23:28:15.7844711Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7844863Z               "line": 445
2026-06-19T23:28:15.7844993Z             }
2026-06-19T23:28:15.7845120Z           ]
2026-06-19T23:28:15.7845259Z         },
2026-06-19T23:28:15.7845402Z         "int": {
2026-06-19T23:28:15.7845555Z           "complete": false,
2026-06-19T23:28:15.7845708Z           "evidence": []
2026-06-19T23:28:15.7845849Z         },
2026-06-19T23:28:15.7846095Z         "unit": {
2026-06-19T23:28:15.7846238Z           "complete": true,
2026-06-19T23:28:15.7846357Z           "evidence": [
2026-06-19T23:28:15.7846480Z             {
2026-06-19T23:28:15.7846663Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7846790Z               "line": 1356
2026-06-19T23:28:15.7846920Z             },
2026-06-19T23:28:15.7847059Z             {
2026-06-19T23:28:15.7847259Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7847406Z               "line": 1713
2026-06-19T23:28:15.7847536Z             },
2026-06-19T23:28:15.7847663Z             {
2026-06-19T23:28:15.7847855Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7848001Z               "line": 892
2026-06-19T23:28:15.7848131Z             },
2026-06-19T23:28:15.7848275Z             {
2026-06-19T23:28:15.7848468Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7848620Z               "line": 991
2026-06-19T23:28:15.7848756Z             },
2026-06-19T23:28:15.7848896Z             {
2026-06-19T23:28:15.7849153Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7849310Z               "line": 1041
2026-06-19T23:28:15.7849439Z             },
2026-06-19T23:28:15.7849572Z             {
2026-06-19T23:28:15.7849744Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7849896Z               "line": 1100
2026-06-19T23:28:15.7850020Z             },
2026-06-19T23:28:15.7850150Z             {
2026-06-19T23:28:15.7850330Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-19T23:28:15.7850475Z               "line": 234
2026-06-19T23:28:15.7850607Z             },
2026-06-19T23:28:15.7850737Z             {
2026-06-19T23:28:15.7850912Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-19T23:28:15.7851042Z               "line": 49
2026-06-19T23:28:15.7851165Z             },
2026-06-19T23:28:15.7851292Z             {
2026-06-19T23:28:15.7851465Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7851616Z               "line": 10329
2026-06-19T23:28:15.7851756Z             },
2026-06-19T23:28:15.7851893Z             {
2026-06-19T23:28:15.7852056Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7852180Z               "line": 10435
2026-06-19T23:28:15.7852309Z             },
2026-06-19T23:28:15.7852428Z             {
2026-06-19T23:28:15.7852580Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7852714Z               "line": 10653
2026-06-19T23:28:15.7852842Z             }
2026-06-19T23:28:15.7852967Z           ]
2026-06-19T23:28:15.7853100Z         }
2026-06-19T23:28:15.7853224Z       }
2026-06-19T23:28:15.7853353Z     },
2026-06-19T23:28:15.7853476Z     {
2026-06-19T23:28:15.7853623Z       "id": "REQ-SUBNET-4",
2026-06-19T23:28:15.7853993Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-19T23:28:15.7854155Z       "requiredStages": [
2026-06-19T23:28:15.7854289Z         "impl",
2026-06-19T23:28:15.7854417Z         "unit"
2026-06-19T23:28:15.7854541Z       ],
2026-06-19T23:28:15.7854675Z       "stages": {
2026-06-19T23:28:15.7854803Z         "doc": {
2026-06-19T23:28:15.7854947Z           "complete": true,
2026-06-19T23:28:15.7855199Z           "evidence": [
2026-06-19T23:28:15.7855328Z             {
2026-06-19T23:28:15.7855544Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-19T23:28:15.7855676Z               "line": 60
2026-06-19T23:28:15.7855805Z             }
2026-06-19T23:28:15.7855930Z           ]
2026-06-19T23:28:15.7856058Z         },
2026-06-19T23:28:15.7856193Z         "impl": {
2026-06-19T23:28:15.7856338Z           "complete": true,
2026-06-19T23:28:15.7856485Z           "evidence": [
2026-06-19T23:28:15.7856618Z             {
2026-06-19T23:28:15.7856788Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7856937Z               "line": 3371
2026-06-19T23:28:15.7857180Z             },
2026-06-19T23:28:15.7857313Z             {
2026-06-19T23:28:15.7857452Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7857595Z               "line": 4831
2026-06-19T23:28:15.7857713Z             },
2026-06-19T23:28:15.7857838Z             {
2026-06-19T23:28:15.7857985Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7858129Z               "line": 4864
2026-06-19T23:28:15.7858256Z             }
2026-06-19T23:28:15.7858386Z           ]
2026-06-19T23:28:15.7858515Z         },
2026-06-19T23:28:15.7858638Z         "int": {
2026-06-19T23:28:15.7858792Z           "complete": false,
2026-06-19T23:28:15.7858919Z           "evidence": []
2026-06-19T23:28:15.7859157Z         },
2026-06-19T23:28:15.7859298Z         "unit": {
2026-06-19T23:28:15.7859437Z           "complete": true,
2026-06-19T23:28:15.7859574Z           "evidence": [
2026-06-19T23:28:15.7859689Z             {
2026-06-19T23:28:15.7859838Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7859965Z               "line": 10092
2026-06-19T23:28:15.7860085Z             },
2026-06-19T23:28:15.7860204Z             {
2026-06-19T23:28:15.7860348Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7860480Z               "line": 10166
2026-06-19T23:28:15.7860600Z             }
2026-06-19T23:28:15.7860739Z           ]
2026-06-19T23:28:15.7860852Z         }
2026-06-19T23:28:15.7860977Z       }
2026-06-19T23:28:15.7861100Z     },
2026-06-19T23:28:15.7861220Z     {
2026-06-19T23:28:15.7861355Z       "id": "REQ-SUBNET-5",
2026-06-19T23:28:15.7862744Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-19T23:28:15.7862897Z       "requiredStages": [
2026-06-19T23:28:15.7863040Z         "impl",
2026-06-19T23:28:15.7863154Z         "unit",
2026-06-19T23:28:15.7863275Z         "int"
2026-06-19T23:28:15.7863398Z       ],
2026-06-19T23:28:15.7863527Z       "stages": {
2026-06-19T23:28:15.7863650Z         "doc": {
2026-06-19T23:28:15.7863793Z           "complete": false,
2026-06-19T23:28:15.7863923Z           "evidence": []
2026-06-19T23:28:15.7864050Z         },
2026-06-19T23:28:15.7864178Z         "impl": {
2026-06-19T23:28:15.7864306Z           "complete": true,
2026-06-19T23:28:15.7864443Z           "evidence": [
2026-06-19T23:28:15.7864563Z             {
2026-06-19T23:28:15.7864729Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-19T23:28:15.7864859Z               "line": 128
2026-06-19T23:28:15.7864977Z             },
2026-06-19T23:28:15.7865106Z             {
2026-06-19T23:28:15.7865283Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-19T23:28:15.7865416Z               "line": 413
2026-06-19T23:28:15.7865540Z             },
2026-06-19T23:28:15.7865668Z             {
2026-06-19T23:28:15.7865846Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7865969Z               "line": 74
2026-06-19T23:28:15.7866094Z             },
2026-06-19T23:28:15.7866217Z             {
2026-06-19T23:28:15.7866389Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.7866632Z               "line": 332
2026-06-19T23:28:15.7866758Z             },
2026-06-19T23:28:15.7866884Z             {
2026-06-19T23:28:15.7867050Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.7867182Z               "line": 621
2026-06-19T23:28:15.7867305Z             },
2026-06-19T23:28:15.7867430Z             {
2026-06-19T23:28:15.7867605Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-19T23:28:15.7867745Z               "line": 31
2026-06-19T23:28:15.7867868Z             },
2026-06-19T23:28:15.7867992Z             {
2026-06-19T23:28:15.7868165Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-19T23:28:15.7868408Z               "line": 50
2026-06-19T23:28:15.7868536Z             },
2026-06-19T23:28:15.7868661Z             {
2026-06-19T23:28:15.7868841Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-19T23:28:15.7869037Z               "line": 69
2026-06-19T23:28:15.7869175Z             },
2026-06-19T23:28:15.7869300Z             {
2026-06-19T23:28:15.7869474Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-19T23:28:15.7869603Z               "line": 113
2026-06-19T23:28:15.7869726Z             },
2026-06-19T23:28:15.7869843Z             {
2026-06-19T23:28:15.7870021Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-19T23:28:15.7870148Z               "line": 25
2026-06-19T23:28:15.7870278Z             },
2026-06-19T23:28:15.7870403Z             {
2026-06-19T23:28:15.7870574Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-19T23:28:15.7870702Z               "line": 34
2026-06-19T23:28:15.7870830Z             },
2026-06-19T23:28:15.7870951Z             {
2026-06-19T23:28:15.7871121Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-19T23:28:15.7871251Z               "line": 17
2026-06-19T23:28:15.7871375Z             },
2026-06-19T23:28:15.7871489Z             {
2026-06-19T23:28:15.7871646Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7871775Z               "line": 4789
2026-06-19T23:28:15.7871900Z             },
2026-06-19T23:28:15.7872027Z             {
2026-06-19T23:28:15.7872181Z               "path": "crates/spt/src/wansend.rs",
2026-06-19T23:28:15.7872313Z               "line": 419
2026-06-19T23:28:15.7872432Z             }
2026-06-19T23:28:15.7872557Z           ]
2026-06-19T23:28:15.7872680Z         },
2026-06-19T23:28:15.7872804Z         "int": {
2026-06-19T23:28:15.7872933Z           "complete": true,
2026-06-19T23:28:15.7873066Z           "evidence": [
2026-06-19T23:28:15.7873186Z             {
2026-06-19T23:28:15.7873366Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.7873506Z               "line": 821
2026-06-19T23:28:15.7873624Z             }
2026-06-19T23:28:15.7873753Z           ]
2026-06-19T23:28:15.7873867Z         },
2026-06-19T23:28:15.7874005Z         "unit": {
2026-06-19T23:28:15.7874126Z           "complete": true,
2026-06-19T23:28:15.7874258Z           "evidence": [
2026-06-19T23:28:15.7874382Z             {
2026-06-19T23:28:15.7874548Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.7874681Z               "line": 341
2026-06-19T23:28:15.7874801Z             },
2026-06-19T23:28:15.7874913Z             {
2026-06-19T23:28:15.7875085Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-19T23:28:15.7875213Z               "line": 1115
2026-06-19T23:28:15.7875366Z             },
2026-06-19T23:28:15.7875505Z             {
2026-06-19T23:28:15.7875685Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-19T23:28:15.7875814Z               "line": 151
2026-06-19T23:28:15.7875942Z             },
2026-06-19T23:28:15.7876063Z             {
2026-06-19T23:28:15.7876243Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-19T23:28:15.7876378Z               "line": 61
2026-06-19T23:28:15.7876496Z             },
2026-06-19T23:28:15.7876620Z             {
2026-06-19T23:28:15.7876892Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-19T23:28:15.7877022Z               "line": 111
2026-06-19T23:28:15.7877144Z             },
2026-06-19T23:28:15.7877265Z             {
2026-06-19T23:28:15.7877439Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-19T23:28:15.7877567Z               "line": 138
2026-06-19T23:28:15.7877700Z             },
2026-06-19T23:28:15.7877814Z             {
2026-06-19T23:28:15.7877990Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-19T23:28:15.7878114Z               "line": 148
2026-06-19T23:28:15.7878237Z             },
2026-06-19T23:28:15.7878485Z             {
2026-06-19T23:28:15.7878639Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7878771Z               "line": 9993
2026-06-19T23:28:15.7878896Z             }
2026-06-19T23:28:15.7879106Z           ]
2026-06-19T23:28:15.7879221Z         }
2026-06-19T23:28:15.7879349Z       }
2026-06-19T23:28:15.7879477Z     },
2026-06-19T23:28:15.7879597Z     {
2026-06-19T23:28:15.7879730Z       "id": "REQ-SUBNET-6",
2026-06-19T23:28:15.7880485Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-19T23:28:15.7880629Z       "requiredStages": [
2026-06-19T23:28:15.7880756Z         "impl",
2026-06-19T23:28:15.7880872Z         "unit"
2026-06-19T23:28:15.7881005Z       ],
2026-06-19T23:28:15.7881124Z       "stages": {
2026-06-19T23:28:15.7881248Z         "doc": {
2026-06-19T23:28:15.7881381Z           "complete": false,
2026-06-19T23:28:15.7881516Z           "evidence": []
2026-06-19T23:28:15.7881644Z         },
2026-06-19T23:28:15.7881773Z         "impl": {
2026-06-19T23:28:15.7881906Z           "complete": true,
2026-06-19T23:28:15.7882035Z           "evidence": [
2026-06-19T23:28:15.7882164Z             {
2026-06-19T23:28:15.7882330Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7882455Z               "line": 254
2026-06-19T23:28:15.7882587Z             },
2026-06-19T23:28:15.7882698Z             {
2026-06-19T23:28:15.7882846Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7882973Z               "line": 4447
2026-06-19T23:28:15.7883102Z             },
2026-06-19T23:28:15.7883221Z             {
2026-06-19T23:28:15.7883369Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7883498Z               "line": 4464
2026-06-19T23:28:15.7883621Z             },
2026-06-19T23:28:15.7883751Z             {
2026-06-19T23:28:15.7883897Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7884027Z               "line": 4517
2026-06-19T23:28:15.7884141Z             },
2026-06-19T23:28:15.7884260Z             {
2026-06-19T23:28:15.7884414Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7884546Z               "line": 4540
2026-06-19T23:28:15.7884676Z             }
2026-06-19T23:28:15.7884798Z           ]
2026-06-19T23:28:15.7884923Z         },
2026-06-19T23:28:15.7885053Z         "int": {
2026-06-19T23:28:15.7885185Z           "complete": false,
2026-06-19T23:28:15.7885318Z           "evidence": []
2026-06-19T23:28:15.7885444Z         },
2026-06-19T23:28:15.7885567Z         "unit": {
2026-06-19T23:28:15.7885693Z           "complete": true,
2026-06-19T23:28:15.7885825Z           "evidence": [
2026-06-19T23:28:15.7885945Z             {
2026-06-19T23:28:15.7886098Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7886226Z               "line": 10007
2026-06-19T23:28:15.7886355Z             },
2026-06-19T23:28:15.7886483Z             {
2026-06-19T23:28:15.7886637Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7886770Z               "line": 10040
2026-06-19T23:28:15.7886885Z             },
2026-06-19T23:28:15.7886994Z             {
2026-06-19T23:28:15.7887151Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7887394Z               "line": 10049
2026-06-19T23:28:15.7887519Z             }
2026-06-19T23:28:15.7887638Z           ]
2026-06-19T23:28:15.7887762Z         }
2026-06-19T23:28:15.7887878Z       }
2026-06-19T23:28:15.7888004Z     },
2026-06-19T23:28:15.7888122Z     {
2026-06-19T23:28:15.7888251Z       "id": "REQ-SUBNET-7",
2026-06-19T23:28:15.7890072Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-19T23:28:15.7890333Z       "requiredStages": [
2026-06-19T23:28:15.7890454Z         "impl",
2026-06-19T23:28:15.7890576Z         "unit"
2026-06-19T23:28:15.7890689Z       ],
2026-06-19T23:28:15.7890818Z       "stages": {
2026-06-19T23:28:15.7890935Z         "doc": {
2026-06-19T23:28:15.7891069Z           "complete": false,
2026-06-19T23:28:15.7891198Z           "evidence": []
2026-06-19T23:28:15.7891326Z         },
2026-06-19T23:28:15.7891456Z         "impl": {
2026-06-19T23:28:15.7891584Z           "complete": true,
2026-06-19T23:28:15.7891709Z           "evidence": [
2026-06-19T23:28:15.7891832Z             {
2026-06-19T23:28:15.7892014Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-19T23:28:15.7892151Z               "line": 17
2026-06-19T23:28:15.7892275Z             },
2026-06-19T23:28:15.7892391Z             {
2026-06-19T23:28:15.7892561Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7892691Z               "line": 103
2026-06-19T23:28:15.7892814Z             },
2026-06-19T23:28:15.7892943Z             {
2026-06-19T23:28:15.7893119Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-19T23:28:15.7893249Z               "line": 312
2026-06-19T23:28:15.7893373Z             },
2026-06-19T23:28:15.7893495Z             {
2026-06-19T23:28:15.7893677Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-19T23:28:15.7893805Z               "line": 131
2026-06-19T23:28:15.7893934Z             },
2026-06-19T23:28:15.7894058Z             {
2026-06-19T23:28:15.7894239Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7894368Z               "line": 160
2026-06-19T23:28:15.7894491Z             },
2026-06-19T23:28:15.7894621Z             {
2026-06-19T23:28:15.7894801Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7894936Z               "line": 447
2026-06-19T23:28:15.7895059Z             },
2026-06-19T23:28:15.7895178Z             {
2026-06-19T23:28:15.7895354Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7895484Z               "line": 670
2026-06-19T23:28:15.7895608Z             },
2026-06-19T23:28:15.7895730Z             {
2026-06-19T23:28:15.7895892Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7900102Z               "line": 710
2026-06-19T23:28:15.7900254Z             },
2026-06-19T23:28:15.7900384Z             {
2026-06-19T23:28:15.7900788Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7901155Z               "line": 766
2026-06-19T23:28:15.7901453Z             },
2026-06-19T23:28:15.7901701Z             {
2026-06-19T23:28:15.7902021Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7902373Z               "line": 136
2026-06-19T23:28:15.7902636Z             },
2026-06-19T23:28:15.7902874Z             {
2026-06-19T23:28:15.7903159Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7903504Z               "line": 139
2026-06-19T23:28:15.7903779Z             }
2026-06-19T23:28:15.7904179Z           ]
2026-06-19T23:28:15.7904422Z         },
2026-06-19T23:28:15.7904670Z         "int": {
2026-06-19T23:28:15.7904933Z           "complete": false,
2026-06-19T23:28:15.7905229Z           "evidence": []
2026-06-19T23:28:15.7905491Z         },
2026-06-19T23:28:15.7905734Z         "unit": {
2026-06-19T23:28:15.7905986Z           "complete": true,
2026-06-19T23:28:15.7906271Z           "evidence": [
2026-06-19T23:28:15.7906537Z             {
2026-06-19T23:28:15.7906832Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-19T23:28:15.7907185Z               "line": 136
2026-06-19T23:28:15.7907457Z             },
2026-06-19T23:28:15.7907804Z             {
2026-06-19T23:28:15.7908091Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-19T23:28:15.7908434Z               "line": 156
2026-06-19T23:28:15.7908693Z             },
2026-06-19T23:28:15.7908935Z             {
2026-06-19T23:28:15.7909324Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7909671Z               "line": 987
2026-06-19T23:28:15.7909928Z             },
2026-06-19T23:28:15.7910170Z             {
2026-06-19T23:28:15.7910456Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-19T23:28:15.7910795Z               "line": 1009
2026-06-19T23:28:15.7911057Z             },
2026-06-19T23:28:15.7911292Z             {
2026-06-19T23:28:15.7911593Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-19T23:28:15.7911924Z               "line": 1419
2026-06-19T23:28:15.7912199Z             },
2026-06-19T23:28:15.7912436Z             {
2026-06-19T23:28:15.7912723Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-19T23:28:15.7913066Z               "line": 1036
2026-06-19T23:28:15.7913333Z             }
2026-06-19T23:28:15.7913563Z           ]
2026-06-19T23:28:15.7913797Z         }
2026-06-19T23:28:15.7914034Z       }
2026-06-19T23:28:15.7914277Z     },
2026-06-19T23:28:15.7914521Z     {
2026-06-19T23:28:15.7914777Z       "id": "REQ-SUBNET-8",
2026-06-19T23:28:15.7916165Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-19T23:28:15.7917344Z       "requiredStages": [
2026-06-19T23:28:15.7917621Z         "impl",
2026-06-19T23:28:15.7917868Z         "unit"
2026-06-19T23:28:15.7918126Z       ],
2026-06-19T23:28:15.7918365Z       "stages": {
2026-06-19T23:28:15.7918627Z         "doc": {
2026-06-19T23:28:15.7918885Z           "complete": false,
2026-06-19T23:28:15.7919262Z           "evidence": []
2026-06-19T23:28:15.7919529Z         },
2026-06-19T23:28:15.7919765Z         "impl": {
2026-06-19T23:28:15.7920025Z           "complete": true,
2026-06-19T23:28:15.7920303Z           "evidence": [
2026-06-19T23:28:15.7920560Z             {
2026-06-19T23:28:15.7920822Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7921122Z               "line": 3807
2026-06-19T23:28:15.7921341Z             },
2026-06-19T23:28:15.7921551Z             {
2026-06-19T23:28:15.7921781Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7922062Z               "line": 3836
2026-06-19T23:28:15.7922284Z             },
2026-06-19T23:28:15.7922485Z             {
2026-06-19T23:28:15.7922706Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7922968Z               "line": 3853
2026-06-19T23:28:15.7923193Z             },
2026-06-19T23:28:15.7923399Z             {
2026-06-19T23:28:15.7923617Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7923879Z               "line": 3876
2026-06-19T23:28:15.7924103Z             },
2026-06-19T23:28:15.7924299Z             {
2026-06-19T23:28:15.7924523Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7924905Z               "line": 4290
2026-06-19T23:28:15.7925128Z             }
2026-06-19T23:28:15.7925328Z           ]
2026-06-19T23:28:15.7925523Z         },
2026-06-19T23:28:15.7925719Z         "int": {
2026-06-19T23:28:15.7925934Z           "complete": false,
2026-06-19T23:28:15.7926162Z           "evidence": []
2026-06-19T23:28:15.7926396Z         },
2026-06-19T23:28:15.7926593Z         "unit": {
2026-06-19T23:28:15.7926811Z           "complete": true,
2026-06-19T23:28:15.7927044Z           "evidence": [
2026-06-19T23:28:15.7927260Z             {
2026-06-19T23:28:15.7927491Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7927756Z               "line": 10197
2026-06-19T23:28:15.7928080Z             },
2026-06-19T23:28:15.7928277Z             {
2026-06-19T23:28:15.7928506Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7928772Z               "line": 10213
2026-06-19T23:28:15.7929052Z             }
2026-06-19T23:28:15.7929254Z           ]
2026-06-19T23:28:15.7929450Z         }
2026-06-19T23:28:15.7929630Z       }
2026-06-19T23:28:15.7929817Z     },
2026-06-19T23:28:15.7930011Z     {
2026-06-19T23:28:15.7930222Z       "id": "REQ-TERM-1",
2026-06-19T23:28:15.7930548Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-19T23:28:15.7930896Z       "requiredStages": [
2026-06-19T23:28:15.7931111Z         "impl",
2026-06-19T23:28:15.7931310Z         "unit"
2026-06-19T23:28:15.7931506Z       ],
2026-06-19T23:28:15.7931697Z       "stages": {
2026-06-19T23:28:15.7931901Z         "doc": {
2026-06-19T23:28:15.7932102Z           "complete": false,
2026-06-19T23:28:15.7932341Z           "evidence": []
2026-06-19T23:28:15.7932559Z         },
2026-06-19T23:28:15.7932765Z         "impl": {
2026-06-19T23:28:15.7932983Z           "complete": true,
2026-06-19T23:28:15.7933199Z           "evidence": [
2026-06-19T23:28:15.7933420Z             {
2026-06-19T23:28:15.7933654Z               "path": "crates/spt-term/src/pty.rs",
2026-06-19T23:28:15.7933930Z               "line": 59
2026-06-19T23:28:15.7934153Z             },
2026-06-19T23:28:15.7934344Z             {
2026-06-19T23:28:15.7934583Z               "path": "crates/spt-term/src/pty.rs",
2026-06-19T23:28:15.7934854Z               "line": 234
2026-06-19T23:28:15.7935074Z             },
2026-06-19T23:28:15.7935275Z             {
2026-06-19T23:28:15.7935514Z               "path": "crates/spt-term/src/surface.rs",
2026-06-19T23:28:15.7935797Z               "line": 100
2026-06-19T23:28:15.7936007Z             }
2026-06-19T23:28:15.7936208Z           ]
2026-06-19T23:28:15.7936408Z         },
2026-06-19T23:28:15.7936608Z         "int": {
2026-06-19T23:28:15.7936828Z           "complete": false,
2026-06-19T23:28:15.7937070Z           "evidence": []
2026-06-19T23:28:15.7937299Z         },
2026-06-19T23:28:15.7937496Z         "unit": {
2026-06-19T23:28:15.7937705Z           "complete": true,
2026-06-19T23:28:15.7937933Z           "evidence": [
2026-06-19T23:28:15.7938147Z             {
2026-06-19T23:28:15.7938383Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-19T23:28:15.7938673Z               "line": 24
2026-06-19T23:28:15.7938884Z             },
2026-06-19T23:28:15.7939151Z             {
2026-06-19T23:28:15.7939381Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-19T23:28:15.7939666Z               "line": 56
2026-06-19T23:28:15.7939876Z             }
2026-06-19T23:28:15.7940077Z           ]
2026-06-19T23:28:15.7940271Z         }
2026-06-19T23:28:15.7940453Z       }
2026-06-19T23:28:15.7940644Z     },
2026-06-19T23:28:15.7940843Z     {
2026-06-19T23:28:15.7941047Z       "id": "REQ-TERM-2",
2026-06-19T23:28:15.7941375Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-19T23:28:15.7941727Z       "requiredStages": [
2026-06-19T23:28:15.7941947Z         "impl",
2026-06-19T23:28:15.7942160Z         "unit"
2026-06-19T23:28:15.7942357Z       ],
2026-06-19T23:28:15.7942552Z       "stages": {
2026-06-19T23:28:15.7942767Z         "doc": {
2026-06-19T23:28:15.7942982Z           "complete": false,
2026-06-19T23:28:15.7943353Z           "evidence": []
2026-06-19T23:28:15.7943590Z         },
2026-06-19T23:28:15.7943783Z         "impl": {
2026-06-19T23:28:15.7943999Z           "complete": true,
2026-06-19T23:28:15.7944228Z           "evidence": [
2026-06-19T23:28:15.7944442Z             {
2026-06-19T23:28:15.7944680Z               "path": "crates/spt-term/src/surface.rs",
2026-06-19T23:28:15.7944952Z               "line": 117
2026-06-19T23:28:15.7945172Z             },
2026-06-19T23:28:15.7945376Z             {
2026-06-19T23:28:15.7945619Z               "path": "crates/spt-term/src/surface.rs",
2026-06-19T23:28:15.7945896Z               "line": 127
2026-06-19T23:28:15.7946253Z             }
2026-06-19T23:28:15.7946453Z           ]
2026-06-19T23:28:15.7946643Z         },
2026-06-19T23:28:15.7946835Z         "int": {
2026-06-19T23:28:15.7947049Z           "complete": false,
2026-06-19T23:28:15.7947282Z           "evidence": []
2026-06-19T23:28:15.7947516Z         },
2026-06-19T23:28:15.7947713Z         "unit": {
2026-06-19T23:28:15.7947921Z           "complete": true,
2026-06-19T23:28:15.7948145Z           "evidence": [
2026-06-19T23:28:15.7948362Z             {
2026-06-19T23:28:15.7948588Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-19T23:28:15.7948872Z               "line": 46
2026-06-19T23:28:15.7949172Z             },
2026-06-19T23:28:15.7949359Z             {
2026-06-19T23:28:15.7949601Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-19T23:28:15.7949882Z               "line": 77
2026-06-19T23:28:15.7950102Z             }
2026-06-19T23:28:15.7950303Z           ]
2026-06-19T23:28:15.7950498Z         }
2026-06-19T23:28:15.7950698Z       }
2026-06-19T23:28:15.7950890Z     },
2026-06-19T23:28:15.7951074Z     {
2026-06-19T23:28:15.7951266Z       "id": "REQ-TERM-3",
2026-06-19T23:28:15.7951560Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-19T23:28:15.7951873Z       "requiredStages": [
2026-06-19T23:28:15.7952101Z         "impl",
2026-06-19T23:28:15.7952302Z         "unit"
2026-06-19T23:28:15.7952503Z       ],
2026-06-19T23:28:15.7952692Z       "stages": {
2026-06-19T23:28:15.7952894Z         "doc": {
2026-06-19T23:28:15.7953112Z           "complete": false,
2026-06-19T23:28:15.7953365Z           "evidence": []
2026-06-19T23:28:15.7953580Z         },
2026-06-19T23:28:15.7953772Z         "impl": {
2026-06-19T23:28:15.7953984Z           "complete": true,
2026-06-19T23:28:15.7954221Z           "evidence": [
2026-06-19T23:28:15.7954435Z             {
2026-06-19T23:28:15.7954672Z               "path": "crates/spt-term/src/stream.rs",
2026-06-19T23:28:15.7954949Z               "line": 71
2026-06-19T23:28:15.7955164Z             }
2026-06-19T23:28:15.7955355Z           ]
2026-06-19T23:28:15.7955546Z         },
2026-06-19T23:28:15.7955747Z         "int": {
2026-06-19T23:28:15.7955951Z           "complete": false,
2026-06-19T23:28:15.7956189Z           "evidence": []
2026-06-19T23:28:15.7956410Z         },
2026-06-19T23:28:15.7956605Z         "unit": {
2026-06-19T23:28:15.7956856Z           "complete": true,
2026-06-19T23:28:15.7957105Z           "evidence": [
2026-06-19T23:28:15.7957328Z             {
2026-06-19T23:28:15.7957570Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-19T23:28:15.7957871Z               "line": 37
2026-06-19T23:28:15.7958091Z             },
2026-06-19T23:28:15.7958297Z             {
2026-06-19T23:28:15.7958544Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-19T23:28:15.7958825Z               "line": 67
2026-06-19T23:28:15.7959129Z             }
2026-06-19T23:28:15.7959333Z           ]
2026-06-19T23:28:15.7959527Z         }
2026-06-19T23:28:15.7959713Z       }
2026-06-19T23:28:15.7959905Z     },
2026-06-19T23:28:15.7960099Z     {
2026-06-19T23:28:15.7960305Z       "id": "REQ-TERM-4",
2026-06-19T23:28:15.7960968Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-19T23:28:15.7961764Z       "requiredStages": [
2026-06-19T23:28:15.7961991Z         "impl",
2026-06-19T23:28:15.7962200Z         "unit",
2026-06-19T23:28:15.7962399Z         "int"
2026-06-19T23:28:15.7962600Z       ],
2026-06-19T23:28:15.7962796Z       "stages": {
2026-06-19T23:28:15.7963024Z         "doc": {
2026-06-19T23:28:15.7963243Z           "complete": false,
2026-06-19T23:28:15.7963477Z           "evidence": []
2026-06-19T23:28:15.7963697Z         },
2026-06-19T23:28:15.7963901Z         "impl": {
2026-06-19T23:28:15.7964173Z           "complete": true,
2026-06-19T23:28:15.7964412Z           "evidence": [
2026-06-19T23:28:15.7964629Z             {
2026-06-19T23:28:15.7964985Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.7965275Z               "line": 37
2026-06-19T23:28:15.7965495Z             },
2026-06-19T23:28:15.7965696Z             {
2026-06-19T23:28:15.7965940Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7966234Z               "line": 25
2026-06-19T23:28:15.7966454Z             },
2026-06-19T23:28:15.7966650Z             {
2026-06-19T23:28:15.7966899Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7967199Z               "line": 114
2026-06-19T23:28:15.7967425Z             },
2026-06-19T23:28:15.7967626Z             {
2026-06-19T23:28:15.7967864Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7968165Z               "line": 267
2026-06-19T23:28:15.7968383Z             },
2026-06-19T23:28:15.7968585Z             {
2026-06-19T23:28:15.7968833Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7969219Z               "line": 289
2026-06-19T23:28:15.7969443Z             },
2026-06-19T23:28:15.7969628Z             {
2026-06-19T23:28:15.7969870Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7970155Z               "line": 307
2026-06-19T23:28:15.7970373Z             },
2026-06-19T23:28:15.7970583Z             {
2026-06-19T23:28:15.7970822Z               "path": "crates/spt-store/src/history.rs",
2026-06-19T23:28:15.7971109Z               "line": 33
2026-06-19T23:28:15.7971322Z             },
2026-06-19T23:28:15.7971528Z             {
2026-06-19T23:28:15.7971767Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.7972054Z               "line": 52
2026-06-19T23:28:15.7972267Z             },
2026-06-19T23:28:15.7972466Z             {
2026-06-19T23:28:15.7972704Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.7972998Z               "line": 180
2026-06-19T23:28:15.7973226Z             },
2026-06-19T23:28:15.7973432Z             {
2026-06-19T23:28:15.7973675Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.7973962Z               "line": 190
2026-06-19T23:28:15.7974180Z             },
2026-06-19T23:28:15.7974380Z             {
2026-06-19T23:28:15.7974620Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.7974911Z               "line": 250
2026-06-19T23:28:15.7975132Z             },
2026-06-19T23:28:15.7975336Z             {
2026-06-19T23:28:15.7975574Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7975850Z               "line": 280
2026-06-19T23:28:15.7976074Z             },
2026-06-19T23:28:15.7976270Z             {
2026-06-19T23:28:15.7976510Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.7976790Z               "line": 291
2026-06-19T23:28:15.7977009Z             },
2026-06-19T23:28:15.7977210Z             {
2026-06-19T23:28:15.7977424Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.7977695Z               "line": 1191
2026-06-19T23:28:15.7977919Z             }
2026-06-19T23:28:15.7978110Z           ]
2026-06-19T23:28:15.7978309Z         },
2026-06-19T23:28:15.7978510Z         "int": {
2026-06-19T23:28:15.7978725Z           "complete": true,
2026-06-19T23:28:15.7979034Z           "evidence": [
2026-06-19T23:28:15.7979407Z             {
2026-06-19T23:28:15.7979674Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-19T23:28:15.7979955Z               "line": 18
2026-06-19T23:28:15.7984716Z             }
2026-06-19T23:28:15.7984978Z           ]
2026-06-19T23:28:15.7985175Z         },
2026-06-19T23:28:15.7985384Z         "unit": {
2026-06-19T23:28:15.7985617Z           "complete": true,
2026-06-19T23:28:15.7985850Z           "evidence": [
2026-06-19T23:28:15.7986076Z             {
2026-06-19T23:28:15.7986333Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.7986630Z               "line": 364
2026-06-19T23:28:15.7986850Z             },
2026-06-19T23:28:15.7987202Z             {
2026-06-19T23:28:15.7987446Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.7987728Z               "line": 416
2026-06-19T23:28:15.7987950Z             },
2026-06-19T23:28:15.7988146Z             {
2026-06-19T23:28:15.7988385Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.7988670Z               "line": 426
2026-06-19T23:28:15.7988888Z             },
2026-06-19T23:28:15.7989156Z             {
2026-06-19T23:28:15.7989400Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7989681Z               "line": 436
2026-06-19T23:28:15.7989885Z             },
2026-06-19T23:28:15.7990085Z             {
2026-06-19T23:28:15.7990339Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7990616Z               "line": 456
2026-06-19T23:28:15.7990833Z             },
2026-06-19T23:28:15.7991032Z             {
2026-06-19T23:28:15.7991270Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7991556Z               "line": 478
2026-06-19T23:28:15.7991784Z             },
2026-06-19T23:28:15.7991966Z             {
2026-06-19T23:28:15.7992210Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7992496Z               "line": 491
2026-06-19T23:28:15.7992709Z             },
2026-06-19T23:28:15.7992911Z             {
2026-06-19T23:28:15.7993149Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-19T23:28:15.7993436Z               "line": 502
2026-06-19T23:28:15.7993653Z             },
2026-06-19T23:28:15.7993848Z             {
2026-06-19T23:28:15.7994089Z               "path": "crates/spt-store/src/history.rs",
2026-06-19T23:28:15.7994379Z               "line": 108
2026-06-19T23:28:15.7994599Z             },
2026-06-19T23:28:15.7994796Z             {
2026-06-19T23:28:15.7995038Z               "path": "crates/spt-term/src/digest.rs",
2026-06-19T23:28:15.7995319Z               "line": 119
2026-06-19T23:28:15.7995543Z             },
2026-06-19T23:28:15.7995740Z             {
2026-06-19T23:28:15.7995978Z               "path": "crates/spt-term/src/digest.rs",
2026-06-19T23:28:15.7996262Z               "line": 127
2026-06-19T23:28:15.7996480Z             },
2026-06-19T23:28:15.7996680Z             {
2026-06-19T23:28:15.7996903Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.7997190Z               "line": 474
2026-06-19T23:28:15.7997400Z             },
2026-06-19T23:28:15.7997600Z             {
2026-06-19T23:28:15.7997824Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.7998115Z               "line": 501
2026-06-19T23:28:15.7998325Z             },
2026-06-19T23:28:15.7998530Z             {
2026-06-19T23:28:15.7998797Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.7999177Z               "line": 520
2026-06-19T23:28:15.7999392Z             },
2026-06-19T23:28:15.7999588Z             {
2026-06-19T23:28:15.7999826Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8000111Z               "line": 535
2026-06-19T23:28:15.8000346Z             },
2026-06-19T23:28:15.8000542Z             {
2026-06-19T23:28:15.8000780Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8001065Z               "line": 561
2026-06-19T23:28:15.8001398Z             },
2026-06-19T23:28:15.8001597Z             {
2026-06-19T23:28:15.8001825Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8002112Z               "line": 581
2026-06-19T23:28:15.8002339Z             },
2026-06-19T23:28:15.8002555Z             {
2026-06-19T23:28:15.8002789Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8003075Z               "line": 591
2026-06-19T23:28:15.8003293Z             },
2026-06-19T23:28:15.8003489Z             {
2026-06-19T23:28:15.8003729Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8004024Z               "line": 683
2026-06-19T23:28:15.8004346Z             },
2026-06-19T23:28:15.8004544Z             {
2026-06-19T23:28:15.8004789Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.8005074Z               "line": 881
2026-06-19T23:28:15.8005294Z             },
2026-06-19T23:28:15.8005488Z             {
2026-06-19T23:28:15.8005713Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8005995Z               "line": 9764
2026-06-19T23:28:15.8006218Z             }
2026-06-19T23:28:15.8006427Z           ]
2026-06-19T23:28:15.8006625Z         }
2026-06-19T23:28:15.8006808Z       }
2026-06-19T23:28:15.8006989Z     },
2026-06-19T23:28:15.8007182Z     {
2026-06-19T23:28:15.8007383Z       "id": "REQ-TERM-5",
2026-06-19T23:28:15.8009143Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-19T23:28:15.8010815Z       "requiredStages": [
2026-06-19T23:28:15.8011035Z         "doc",
2026-06-19T23:28:15.8011244Z         "impl",
2026-06-19T23:28:15.8011445Z         "unit",
2026-06-19T23:28:15.8011640Z         "int"
2026-06-19T23:28:15.8011835Z       ],
2026-06-19T23:28:15.8012035Z       "stages": {
2026-06-19T23:28:15.8012251Z         "doc": {
2026-06-19T23:28:15.8012467Z           "complete": true,
2026-06-19T23:28:15.8012695Z           "evidence": [
2026-06-19T23:28:15.8012909Z             {
2026-06-19T23:28:15.8013134Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.8013406Z               "line": 209
2026-06-19T23:28:15.8013631Z             }
2026-06-19T23:28:15.8013830Z           ]
2026-06-19T23:28:15.8014035Z         },
2026-06-19T23:28:15.8014231Z         "impl": {
2026-06-19T23:28:15.8014455Z           "complete": true,
2026-06-19T23:28:15.8014689Z           "evidence": [
2026-06-19T23:28:15.8014907Z             {
2026-06-19T23:28:15.8015157Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8015442Z               "line": 75
2026-06-19T23:28:15.8015653Z             },
2026-06-19T23:28:15.8015849Z             {
2026-06-19T23:28:15.8016091Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8016382Z               "line": 131
2026-06-19T23:28:15.8016607Z             },
2026-06-19T23:28:15.8016808Z             {
2026-06-19T23:28:15.8017035Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.8017316Z               "line": 22
2026-06-19T23:28:15.8017531Z             },
2026-06-19T23:28:15.8017723Z             {
2026-06-19T23:28:15.8017967Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.8018249Z               "line": 87
2026-06-19T23:28:15.8018469Z             },
2026-06-19T23:28:15.8018663Z             {
2026-06-19T23:28:15.8018882Z               "path": "crates/spt-term/src/digest.rs",
2026-06-19T23:28:15.8019235Z               "line": 30
2026-06-19T23:28:15.8019455Z             },
2026-06-19T23:28:15.8019803Z             {
2026-06-19T23:28:15.8020038Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8020335Z               "line": 103
2026-06-19T23:28:15.8020560Z             },
2026-06-19T23:28:15.8020760Z             {
2026-06-19T23:28:15.8020990Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8021266Z               "line": 167
2026-06-19T23:28:15.8021480Z             },
2026-06-19T23:28:15.8021671Z             {
2026-06-19T23:28:15.8021900Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8022190Z               "line": 434
2026-06-19T23:28:15.8022409Z             },
2026-06-19T23:28:15.8022712Z             {
2026-06-19T23:28:15.8022936Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8023207Z               "line": 5622
2026-06-19T23:28:15.8023422Z             },
2026-06-19T23:28:15.8023609Z             {
2026-06-19T23:28:15.8023828Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8024099Z               "line": 5929
2026-06-19T23:28:15.8024314Z             }
2026-06-19T23:28:15.8024511Z           ]
2026-06-19T23:28:15.8024700Z         },
2026-06-19T23:28:15.8024896Z         "int": {
2026-06-19T23:28:15.8025116Z           "complete": true,
2026-06-19T23:28:15.8025347Z           "evidence": [
2026-06-19T23:28:15.8025566Z             {
2026-06-19T23:28:15.8025832Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-19T23:28:15.8026161Z               "line": 17
2026-06-19T23:28:15.8026380Z             }
2026-06-19T23:28:15.8026571Z           ]
2026-06-19T23:28:15.8026762Z         },
2026-06-19T23:28:15.8026961Z         "unit": {
2026-06-19T23:28:15.8027172Z           "complete": true,
2026-06-19T23:28:15.8027401Z           "evidence": [
2026-06-19T23:28:15.8027615Z             {
2026-06-19T23:28:15.8027848Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8028142Z               "line": 375
2026-06-19T23:28:15.8028370Z             },
2026-06-19T23:28:15.8028598Z             {
2026-06-19T23:28:15.8028832Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.8029175Z               "line": 162
2026-06-19T23:28:15.8029390Z             },
2026-06-19T23:28:15.8029580Z             {
2026-06-19T23:28:15.8029809Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.8030090Z               "line": 179
2026-06-19T23:28:15.8030307Z             },
2026-06-19T23:28:15.8030501Z             {
2026-06-19T23:28:15.8030724Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.8031002Z               "line": 201
2026-06-19T23:28:15.8031096Z             },
2026-06-19T23:28:15.8031201Z             {
2026-06-19T23:28:15.8031340Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.8031444Z               "line": 212
2026-06-19T23:28:15.8031550Z             },
2026-06-19T23:28:15.8031654Z             {
2026-06-19T23:28:15.8031782Z               "path": "crates/spt-live/src/digest.rs",
2026-06-19T23:28:15.8031903Z               "line": 223
2026-06-19T23:28:15.8032007Z             },
2026-06-19T23:28:15.8032107Z             {
2026-06-19T23:28:15.8032250Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.8032360Z               "line": 1433
2026-06-19T23:28:15.8032465Z             },
2026-06-19T23:28:15.8032556Z             {
2026-06-19T23:28:15.8032707Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.8032818Z               "line": 1476
2026-06-19T23:28:15.8032927Z             },
2026-06-19T23:28:15.8033026Z             {
2026-06-19T23:28:15.8033174Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8033286Z               "line": 606
2026-06-19T23:28:15.8033381Z             },
2026-06-19T23:28:15.8033487Z             {
2026-06-19T23:28:15.8033620Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8033729Z               "line": 634
2026-06-19T23:28:15.8033944Z             },
2026-06-19T23:28:15.8034053Z             {
2026-06-19T23:28:15.8034202Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8034311Z               "line": 646
2026-06-19T23:28:15.8034417Z             },
2026-06-19T23:28:15.8034517Z             {
2026-06-19T23:28:15.8034664Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8034770Z               "line": 669
2026-06-19T23:28:15.8034864Z             },
2026-06-19T23:28:15.8034960Z             {
2026-06-19T23:28:15.8035090Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8035198Z               "line": 8475
2026-06-19T23:28:15.8035390Z             },
2026-06-19T23:28:15.8035498Z             {
2026-06-19T23:28:15.8035618Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8035734Z               "line": 8533
2026-06-19T23:28:15.8035841Z             }
2026-06-19T23:28:15.8035945Z           ]
2026-06-19T23:28:15.8036051Z         }
2026-06-19T23:28:15.8036158Z       }
2026-06-19T23:28:15.8036267Z     },
2026-06-19T23:28:15.8036368Z     {
2026-06-19T23:28:15.8036487Z       "id": "REQ-TERM-6",
2026-06-19T23:28:15.8037661Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-19T23:28:15.8037778Z       "requiredStages": [
2026-06-19T23:28:15.8037894Z         "impl",
2026-06-19T23:28:15.8038004Z         "unit",
2026-06-19T23:28:15.8038107Z         "int"
2026-06-19T23:28:15.8038214Z       ],
2026-06-19T23:28:15.8038314Z       "stages": {
2026-06-19T23:28:15.8038418Z         "doc": {
2026-06-19T23:28:15.8038526Z           "complete": false,
2026-06-19T23:28:15.8038646Z           "evidence": []
2026-06-19T23:28:15.8038758Z         },
2026-06-19T23:28:15.8038858Z         "impl": {
2026-06-19T23:28:15.8039073Z           "complete": true,
2026-06-19T23:28:15.8039168Z           "evidence": [
2026-06-19T23:28:15.8039274Z             {
2026-06-19T23:28:15.8039416Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8039521Z               "line": 132
2026-06-19T23:28:15.8039627Z             },
2026-06-19T23:28:15.8039726Z             {
2026-06-19T23:28:15.8039874Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8039983Z               "line": 187
2026-06-19T23:28:15.8040083Z             },
2026-06-19T23:28:15.8040185Z             {
2026-06-19T23:28:15.8040327Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-19T23:28:15.8040432Z               "line": 17
2026-06-19T23:28:15.8040533Z             },
2026-06-19T23:28:15.8040632Z             {
2026-06-19T23:28:15.8040775Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-19T23:28:15.8040891Z               "line": 96
2026-06-19T23:28:15.8040989Z             },
2026-06-19T23:28:15.8041100Z             {
2026-06-19T23:28:15.8041243Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8041346Z               "line": 319
2026-06-19T23:28:15.8041451Z             },
2026-06-19T23:28:15.8041542Z             {
2026-06-19T23:28:15.8041680Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8041790Z               "line": 396
2026-06-19T23:28:15.8041890Z             }
2026-06-19T23:28:15.8041994Z           ]
2026-06-19T23:28:15.8042095Z         },
2026-06-19T23:28:15.8042195Z         "int": {
2026-06-19T23:28:15.8042304Z           "complete": true,
2026-06-19T23:28:15.8042419Z           "evidence": [
2026-06-19T23:28:15.8042524Z             {
2026-06-19T23:28:15.8042700Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-19T23:28:15.8042815Z               "line": 18
2026-06-19T23:28:15.8042915Z             }
2026-06-19T23:28:15.8043135Z           ]
2026-06-19T23:28:15.8043239Z         },
2026-06-19T23:28:15.8043349Z         "unit": {
2026-06-19T23:28:15.8043459Z           "complete": true,
2026-06-19T23:28:15.8043558Z           "evidence": [
2026-06-19T23:28:15.8043662Z             {
2026-06-19T23:28:15.8043800Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-19T23:28:15.8043908Z               "line": 126
2026-06-19T23:28:15.8044008Z             },
2026-06-19T23:28:15.8044104Z             {
2026-06-19T23:28:15.8044256Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-19T23:28:15.8044357Z               "line": 141
2026-06-19T23:28:15.8044462Z             },
2026-06-19T23:28:15.8044643Z             {
2026-06-19T23:28:15.8044781Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-19T23:28:15.8044890Z               "line": 157
2026-06-19T23:28:15.8044992Z             },
2026-06-19T23:28:15.8045101Z             {
2026-06-19T23:28:15.8045229Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-19T23:28:15.8045340Z               "line": 175
2026-06-19T23:28:15.8045439Z             },
2026-06-19T23:28:15.8045544Z             {
2026-06-19T23:28:15.8045687Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8045796Z               "line": 738
2026-06-19T23:28:15.8045907Z             },
2026-06-19T23:28:15.8046002Z             {
2026-06-19T23:28:15.8046149Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8046255Z               "line": 759
2026-06-19T23:28:15.8046364Z             },
2026-06-19T23:28:15.8046454Z             {
2026-06-19T23:28:15.8046601Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-19T23:28:15.8046709Z               "line": 722
2026-06-19T23:28:15.8046808Z             }
2026-06-19T23:28:15.8046914Z           ]
2026-06-19T23:28:15.8047014Z         }
2026-06-19T23:28:15.8047109Z       }
2026-06-19T23:28:15.8047214Z     },
2026-06-19T23:28:15.8047319Z     {
2026-06-19T23:28:15.8047438Z       "id": "REQ-TERM-7",
2026-06-19T23:28:15.8048616Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-19T23:28:15.8048726Z       "requiredStages": [
2026-06-19T23:28:15.8048827Z         "impl",
2026-06-19T23:28:15.8048931Z         "unit",
2026-06-19T23:28:15.8049130Z         "int"
2026-06-19T23:28:15.8049234Z       ],
2026-06-19T23:28:15.8049337Z       "stages": {
2026-06-19T23:28:15.8049437Z         "doc": {
2026-06-19T23:28:15.8049548Z           "complete": false,
2026-06-19T23:28:15.8049652Z           "evidence": []
2026-06-19T23:28:15.8049747Z         },
2026-06-19T23:28:15.8049858Z         "impl": {
2026-06-19T23:28:15.8049967Z           "complete": true,
2026-06-19T23:28:15.8050081Z           "evidence": [
2026-06-19T23:28:15.8050172Z             {
2026-06-19T23:28:15.8050314Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8050416Z               "line": 133
2026-06-19T23:28:15.8050516Z             },
2026-06-19T23:28:15.8050620Z             {
2026-06-19T23:28:15.8050750Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8050849Z               "line": 326
2026-06-19T23:28:15.8050953Z             },
2026-06-19T23:28:15.8051060Z             {
2026-06-19T23:28:15.8051187Z               "path": "crates/spt-live/src/inject.rs",
2026-06-19T23:28:15.8051302Z               "line": 15
2026-06-19T23:28:15.8051408Z             },
2026-06-19T23:28:15.8051502Z             {
2026-06-19T23:28:15.8051636Z               "path": "crates/spt-live/src/inject.rs",
2026-06-19T23:28:15.8051737Z               "line": 32
2026-06-19T23:28:15.8051836Z             },
2026-06-19T23:28:15.8052045Z             {
2026-06-19T23:28:15.8052183Z               "path": "crates/spt-store/src/history.rs",
2026-06-19T23:28:15.8052287Z               "line": 49
2026-06-19T23:28:15.8052384Z             },
2026-06-19T23:28:15.8052489Z             {
2026-06-19T23:28:15.8052616Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8052723Z               "line": 286
2026-06-19T23:28:15.8052832Z             },
2026-06-19T23:28:15.8052922Z             {
2026-06-19T23:28:15.8053061Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8053165Z               "line": 320
2026-06-19T23:28:15.8053260Z             }
2026-06-19T23:28:15.8053471Z           ]
2026-06-19T23:28:15.8053570Z         },
2026-06-19T23:28:15.8053681Z         "int": {
2026-06-19T23:28:15.8053780Z           "complete": true,
2026-06-19T23:28:15.8053881Z           "evidence": [
2026-06-19T23:28:15.8053982Z             {
2026-06-19T23:28:15.8054147Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-19T23:28:15.8054251Z               "line": 19
2026-06-19T23:28:15.8054356Z             }
2026-06-19T23:28:15.8054454Z           ]
2026-06-19T23:28:15.8054554Z         },
2026-06-19T23:28:15.8054660Z         "unit": {
2026-06-19T23:28:15.8054764Z           "complete": true,
2026-06-19T23:28:15.8054869Z           "evidence": [
2026-06-19T23:28:15.8054960Z             {
2026-06-19T23:28:15.8055092Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8055198Z               "line": 455
2026-06-19T23:28:15.8055294Z             },
2026-06-19T23:28:15.8055398Z             {
2026-06-19T23:28:15.8055513Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-19T23:28:15.8055627Z               "line": 566
2026-06-19T23:28:15.8055727Z             },
2026-06-19T23:28:15.8055832Z             {
2026-06-19T23:28:15.8055970Z               "path": "crates/spt-live/src/inject.rs",
2026-06-19T23:28:15.8056075Z               "line": 58
2026-06-19T23:28:15.8056181Z             },
2026-06-19T23:28:15.8056280Z             {
2026-06-19T23:28:15.8056409Z               "path": "crates/spt-live/src/inject.rs",
2026-06-19T23:28:15.8056510Z               "line": 77
2026-06-19T23:28:15.8056614Z             },
2026-06-19T23:28:15.8056714Z             {
2026-06-19T23:28:15.8056840Z               "path": "crates/spt-live/src/inject.rs",
2026-06-19T23:28:15.8056952Z               "line": 87
2026-06-19T23:28:15.8057051Z             },
2026-06-19T23:28:15.8057157Z             {
2026-06-19T23:28:15.8057288Z               "path": "crates/spt-store/src/history.rs",
2026-06-19T23:28:15.8057392Z               "line": 94
2026-06-19T23:28:15.8057503Z             },
2026-06-19T23:28:15.8057589Z             {
2026-06-19T23:28:15.8057726Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8057827Z               "line": 691
2026-06-19T23:28:15.8057927Z             },
2026-06-19T23:28:15.8058026Z             {
2026-06-19T23:28:15.8058166Z               "path": "crates/spt-term/src/projection.rs",
2026-06-19T23:28:15.8058261Z               "line": 716
2026-06-19T23:28:15.8058360Z             }
2026-06-19T23:28:15.8058457Z           ]
2026-06-19T23:28:15.8058556Z         }
2026-06-19T23:28:15.8058656Z       }
2026-06-19T23:28:15.8058743Z     },
2026-06-19T23:28:15.8058852Z     {
2026-06-19T23:28:15.8059043Z       "id": "REQ-UPD-1",
2026-06-19T23:28:15.8059176Z       "title": "Peer-propagated update over P2P",
2026-06-19T23:28:15.8059286Z       "requiredStages": [
2026-06-19T23:28:15.8059382Z         "impl",
2026-06-19T23:28:15.8059500Z         "unit",
2026-06-19T23:28:15.8059599Z         "int"
2026-06-19T23:28:15.8059709Z       ],
2026-06-19T23:28:15.8059817Z       "stages": {
2026-06-19T23:28:15.8059916Z         "doc": {
2026-06-19T23:28:15.8060026Z           "complete": false,
2026-06-19T23:28:15.8060127Z           "evidence": []
2026-06-19T23:28:15.8060240Z         },
2026-06-19T23:28:15.8060341Z         "impl": {
2026-06-19T23:28:15.8060451Z           "complete": true,
2026-06-19T23:28:15.8060651Z           "evidence": [
2026-06-19T23:28:15.8060751Z             {
2026-06-19T23:28:15.8060889Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8060991Z               "line": 28
2026-06-19T23:28:15.8061094Z             },
2026-06-19T23:28:15.8061189Z             {
2026-06-19T23:28:15.8061324Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8061437Z               "line": 103
2026-06-19T23:28:15.8061532Z             },
2026-06-19T23:28:15.8061634Z             {
2026-06-19T23:28:15.8061771Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8061973Z               "line": 342
2026-06-19T23:28:15.8062071Z             },
2026-06-19T23:28:15.8062167Z             {
2026-06-19T23:28:15.8062306Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8062405Z               "line": 22
2026-06-19T23:28:15.8062504Z             },
2026-06-19T23:28:15.8062605Z             {
2026-06-19T23:28:15.8062729Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8062833Z               "line": 207
2026-06-19T23:28:15.8062939Z             },
2026-06-19T23:28:15.8063044Z             {
2026-06-19T23:28:15.8063172Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8063273Z               "line": 283
2026-06-19T23:28:15.8063369Z             },
2026-06-19T23:28:15.8063472Z             {
2026-06-19T23:28:15.8063607Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8063716Z               "line": 340
2026-06-19T23:28:15.8063821Z             },
2026-06-19T23:28:15.8063922Z             {
2026-06-19T23:28:15.8064064Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.8064165Z               "line": 37
2026-06-19T23:28:15.8064279Z             }
2026-06-19T23:28:15.8064383Z           ]
2026-06-19T23:28:15.8064479Z         },
2026-06-19T23:28:15.8064580Z         "int": {
2026-06-19T23:28:15.8064692Z           "complete": true,
2026-06-19T23:28:15.8064797Z           "evidence": [
2026-06-19T23:28:15.8064897Z             {
2026-06-19T23:28:15.8065028Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-19T23:28:15.8065143Z               "line": 207
2026-06-19T23:28:15.8065239Z             },
2026-06-19T23:28:15.8069031Z             {
2026-06-19T23:28:15.8069216Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-19T23:28:15.8069332Z               "line": 1082
2026-06-19T23:28:15.8069440Z             }
2026-06-19T23:28:15.8069545Z           ]
2026-06-19T23:28:15.8069647Z         },
2026-06-19T23:28:15.8069736Z         "unit": {
2026-06-19T23:28:15.8069860Z           "complete": true,
2026-06-19T23:28:15.8069967Z           "evidence": [
2026-06-19T23:28:15.8070060Z             {
2026-06-19T23:28:15.8070207Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8070321Z               "line": 490
2026-06-19T23:28:15.8070429Z             },
2026-06-19T23:28:15.8070538Z             {
2026-06-19T23:28:15.8070678Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8070786Z               "line": 616
2026-06-19T23:28:15.8070891Z             },
2026-06-19T23:28:15.8070988Z             {
2026-06-19T23:28:15.8071139Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-19T23:28:15.8071241Z               "line": 277
2026-06-19T23:28:15.8071331Z             },
2026-06-19T23:28:15.8071430Z             {
2026-06-19T23:28:15.8071560Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.8071669Z               "line": 124
2026-06-19T23:28:15.8071769Z             },
2026-06-19T23:28:15.8071875Z             {
2026-06-19T23:28:15.8072017Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.8072121Z               "line": 200
2026-06-19T23:28:15.8072227Z             }
2026-06-19T23:28:15.8072326Z           ]
2026-06-19T23:28:15.8072426Z         }
2026-06-19T23:28:15.8072660Z       }
2026-06-19T23:28:15.8072761Z     },
2026-06-19T23:28:15.8072862Z     {
2026-06-19T23:28:15.8072974Z       "id": "REQ-UPD-2",
2026-06-19T23:28:15.8073146Z       "title": "All binaries signature-verified before handoff",
2026-06-19T23:28:15.8073252Z       "requiredStages": [
2026-06-19T23:28:15.8073355Z         "impl",
2026-06-19T23:28:15.8073456Z         "unit"
2026-06-19T23:28:15.8073556Z       ],
2026-06-19T23:28:15.8073661Z       "stages": {
2026-06-19T23:28:15.8073756Z         "doc": {
2026-06-19T23:28:15.8073866Z           "complete": false,
2026-06-19T23:28:15.8073971Z           "evidence": []
2026-06-19T23:28:15.8074071Z         },
2026-06-19T23:28:15.8074262Z         "impl": {
2026-06-19T23:28:15.8074376Z           "complete": true,
2026-06-19T23:28:15.8074477Z           "evidence": [
2026-06-19T23:28:15.8074581Z             {
2026-06-19T23:28:15.8074740Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8074844Z               "line": 343
2026-06-19T23:28:15.8074953Z             },
2026-06-19T23:28:15.8075044Z             {
2026-06-19T23:28:15.8075177Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8075286Z               "line": 476
2026-06-19T23:28:15.8075376Z             },
2026-06-19T23:28:15.8075476Z             {
2026-06-19T23:28:15.8075608Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8075708Z               "line": 29
2026-06-19T23:28:15.8075809Z             },
2026-06-19T23:28:15.8075907Z             {
2026-06-19T23:28:15.8076037Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8076132Z               "line": 271
2026-06-19T23:28:15.8076241Z             },
2026-06-19T23:28:15.8076338Z             {
2026-06-19T23:28:15.8076476Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8076580Z               "line": 288
2026-06-19T23:28:15.8076686Z             },
2026-06-19T23:28:15.8076790Z             {
2026-06-19T23:28:15.8076919Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8077034Z               "line": 408
2026-06-19T23:28:15.8077129Z             },
2026-06-19T23:28:15.8077238Z             {
2026-06-19T23:28:15.8077354Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8077447Z               "line": 558
2026-06-19T23:28:15.8077543Z             },
2026-06-19T23:28:15.8077640Z             {
2026-06-19T23:28:15.8077767Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8077873Z               "line": 155
2026-06-19T23:28:15.8077974Z             }
2026-06-19T23:28:15.8078072Z           ]
2026-06-19T23:28:15.8078167Z         },
2026-06-19T23:28:15.8078277Z         "int": {
2026-06-19T23:28:15.8078385Z           "complete": false,
2026-06-19T23:28:15.8078494Z           "evidence": []
2026-06-19T23:28:15.8078594Z         },
2026-06-19T23:28:15.8078695Z         "unit": {
2026-06-19T23:28:15.8078799Z           "complete": true,
2026-06-19T23:28:15.8078899Z           "evidence": [
2026-06-19T23:28:15.8079075Z             {
2026-06-19T23:28:15.8079205Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8079314Z               "line": 750
2026-06-19T23:28:15.8079409Z             },
2026-06-19T23:28:15.8079510Z             {
2026-06-19T23:28:15.8079638Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8079743Z               "line": 811
2026-06-19T23:28:15.8079849Z             },
2026-06-19T23:28:15.8079944Z             {
2026-06-19T23:28:15.8080067Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8080164Z               "line": 825
2026-06-19T23:28:15.8080263Z             },
2026-06-19T23:28:15.8080348Z             {
2026-06-19T23:28:15.8080479Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8080592Z               "line": 841
2026-06-19T23:28:15.8080691Z             },
2026-06-19T23:28:15.8080791Z             {
2026-06-19T23:28:15.8080923Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8081146Z               "line": 932
2026-06-19T23:28:15.8081248Z             },
2026-06-19T23:28:15.8081342Z             {
2026-06-19T23:28:15.8081481Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8081590Z               "line": 414
2026-06-19T23:28:15.8081690Z             },
2026-06-19T23:28:15.8081786Z             {
2026-06-19T23:28:15.8081914Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8082019Z               "line": 427
2026-06-19T23:28:15.8082111Z             },
2026-06-19T23:28:15.8082214Z             {
2026-06-19T23:28:15.8082343Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-19T23:28:15.8082543Z               "line": 410
2026-06-19T23:28:15.8082644Z             }
2026-06-19T23:28:15.8082745Z           ]
2026-06-19T23:28:15.8082853Z         }
2026-06-19T23:28:15.8082953Z       }
2026-06-19T23:28:15.8083055Z     },
2026-06-19T23:28:15.8083145Z     {
2026-06-19T23:28:15.8083254Z       "id": "REQ-UPD-3",
2026-06-19T23:28:15.8083441Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-19T23:28:15.8083558Z       "requiredStages": [
2026-06-19T23:28:15.8083663Z         "impl",
2026-06-19T23:28:15.8083759Z         "unit",
2026-06-19T23:28:15.8083863Z         "int"
2026-06-19T23:28:15.8083958Z       ],
2026-06-19T23:28:15.8084064Z       "stages": {
2026-06-19T23:28:15.8084160Z         "doc": {
2026-06-19T23:28:15.8084268Z           "complete": false,
2026-06-19T23:28:15.8084379Z           "evidence": []
2026-06-19T23:28:15.8084479Z         },
2026-06-19T23:28:15.8084587Z         "impl": {
2026-06-19T23:28:15.8084698Z           "complete": true,
2026-06-19T23:28:15.8084802Z           "evidence": [
2026-06-19T23:28:15.8084888Z             {
2026-06-19T23:28:15.8085032Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8085136Z               "line": 40
2026-06-19T23:28:15.8085236Z             },
2026-06-19T23:28:15.8085347Z             {
2026-06-19T23:28:15.8085474Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8085580Z               "line": 87
2026-06-19T23:28:15.8085672Z             },
2026-06-19T23:28:15.8085775Z             {
2026-06-19T23:28:15.8085912Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-19T23:28:15.8086017Z               "line": 994
2026-06-19T23:28:15.8086120Z             },
2026-06-19T23:28:15.8086215Z             {
2026-06-19T23:28:15.8086345Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-19T23:28:15.8086449Z               "line": 1663
2026-06-19T23:28:15.8086558Z             },
2026-06-19T23:28:15.8086655Z             {
2026-06-19T23:28:15.8086778Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8086883Z               "line": 26
2026-06-19T23:28:15.8086984Z             },
2026-06-19T23:28:15.8087088Z             {
2026-06-19T23:28:15.8087218Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8087327Z               "line": 114
2026-06-19T23:28:15.8087431Z             },
2026-06-19T23:28:15.8087532Z             {
2026-06-19T23:28:15.8087665Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8087769Z               "line": 246
2026-06-19T23:28:15.8087871Z             },
2026-06-19T23:28:15.8087970Z             {
2026-06-19T23:28:15.8088094Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8088200Z               "line": 2414
2026-06-19T23:28:15.8088295Z             }
2026-06-19T23:28:15.8088394Z           ]
2026-06-19T23:28:15.8088496Z         },
2026-06-19T23:28:15.8088586Z         "int": {
2026-06-19T23:28:15.8088694Z           "complete": true,
2026-06-19T23:28:15.8088799Z           "evidence": [
2026-06-19T23:28:15.8088903Z             {
2026-06-19T23:28:15.8089106Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-19T23:28:15.8089216Z               "line": 58
2026-06-19T23:28:15.8089307Z             }
2026-06-19T23:28:15.8089513Z           ]
2026-06-19T23:28:15.8089612Z         },
2026-06-19T23:28:15.8089712Z         "unit": {
2026-06-19T23:28:15.8089818Z           "complete": true,
2026-06-19T23:28:15.8089923Z           "evidence": [
2026-06-19T23:28:15.8090021Z             {
2026-06-19T23:28:15.8090161Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8090261Z               "line": 532
2026-06-19T23:28:15.8090361Z             },
2026-06-19T23:28:15.8090462Z             {
2026-06-19T23:28:15.8090599Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8090689Z               "line": 585
2026-06-19T23:28:15.8090791Z             },
2026-06-19T23:28:15.8091009Z             {
2026-06-19T23:28:15.8091153Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8091261Z               "line": 653
2026-06-19T23:28:15.8091356Z             },
2026-06-19T23:28:15.8091461Z             {
2026-06-19T23:28:15.8091597Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-19T23:28:15.8091706Z               "line": 1102
2026-06-19T23:28:15.8091803Z             },
2026-06-19T23:28:15.8091911Z             {
2026-06-19T23:28:15.8092041Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8092136Z               "line": 271
2026-06-19T23:28:15.8092240Z             },
2026-06-19T23:28:15.8092331Z             {
2026-06-19T23:28:15.8092470Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8092569Z               "line": 295
2026-06-19T23:28:15.8092671Z             },
2026-06-19T23:28:15.8092770Z             {
2026-06-19T23:28:15.8092894Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8093005Z               "line": 316
2026-06-19T23:28:15.8093108Z             },
2026-06-19T23:28:15.8093199Z             {
2026-06-19T23:28:15.8093324Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8093432Z               "line": 332
2026-06-19T23:28:15.8093533Z             }
2026-06-19T23:28:15.8093629Z           ]
2026-06-19T23:28:15.8093733Z         }
2026-06-19T23:28:15.8093833Z       }
2026-06-19T23:28:15.8093939Z     },
2026-06-19T23:28:15.8094029Z     {
2026-06-19T23:28:15.8094138Z       "id": "REQ-UPD-4",
2026-06-19T23:28:15.8094343Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-19T23:28:15.8094447Z       "requiredStages": [
2026-06-19T23:28:15.8094557Z         "impl",
2026-06-19T23:28:15.8094658Z         "unit"
2026-06-19T23:28:15.8094757Z       ],
2026-06-19T23:28:15.8094852Z       "stages": {
2026-06-19T23:28:15.8094958Z         "doc": {
2026-06-19T23:28:15.8095067Z           "complete": false,
2026-06-19T23:28:15.8095167Z           "evidence": []
2026-06-19T23:28:15.8095268Z         },
2026-06-19T23:28:15.8095367Z         "impl": {
2026-06-19T23:28:15.8095472Z           "complete": true,
2026-06-19T23:28:15.8095578Z           "evidence": [
2026-06-19T23:28:15.8095682Z             {
2026-06-19T23:28:15.8095826Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8095921Z               "line": 41
2026-06-19T23:28:15.8096030Z             },
2026-06-19T23:28:15.8096126Z             {
2026-06-19T23:28:15.8096269Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8096377Z               "line": 88
2026-06-19T23:28:15.8096477Z             },
2026-06-19T23:28:15.8096582Z             {
2026-06-19T23:28:15.8096718Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-19T23:28:15.8096828Z               "line": 23
2026-06-19T23:28:15.8096924Z             },
2026-06-19T23:28:15.8097028Z             {
2026-06-19T23:28:15.8097162Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-19T23:28:15.8097272Z               "line": 56
2026-06-19T23:28:15.8097366Z             },
2026-06-19T23:28:15.8097463Z             {
2026-06-19T23:28:15.8097596Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-19T23:28:15.8097700Z               "line": 77
2026-06-19T23:28:15.8097887Z             },
2026-06-19T23:28:15.8097982Z             {
2026-06-19T23:28:15.8098121Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-19T23:28:15.8098225Z               "line": 236
2026-06-19T23:28:15.8098325Z             },
2026-06-19T23:28:15.8098427Z             {
2026-06-19T23:28:15.8098554Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-19T23:28:15.8098658Z               "line": 108
2026-06-19T23:28:15.8098765Z             },
2026-06-19T23:28:15.8098878Z             {
2026-06-19T23:28:15.8099084Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.8099179Z               "line": 258
2026-06-19T23:28:15.8099421Z             },
2026-06-19T23:28:15.8099538Z             {
2026-06-19T23:28:15.8099661Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8099768Z               "line": 2413
2026-06-19T23:28:15.8099872Z             }
2026-06-19T23:28:15.8099981Z           ]
2026-06-19T23:28:15.8100073Z         },
2026-06-19T23:28:15.8100187Z         "int": {
2026-06-19T23:28:15.8100296Z           "complete": false,
2026-06-19T23:28:15.8100411Z           "evidence": []
2026-06-19T23:28:15.8100506Z         },
2026-06-19T23:28:15.8100601Z         "unit": {
2026-06-19T23:28:15.8100712Z           "complete": true,
2026-06-19T23:28:15.8100816Z           "evidence": [
2026-06-19T23:28:15.8100916Z             {
2026-06-19T23:28:15.8101050Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8101159Z               "line": 581
2026-06-19T23:28:15.8101254Z             },
2026-06-19T23:28:15.8101351Z             {
2026-06-19T23:28:15.8101488Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8101599Z               "line": 706
2026-06-19T23:28:15.8101699Z             },
2026-06-19T23:28:15.8101797Z             {
2026-06-19T23:28:15.8101926Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-19T23:28:15.8102035Z               "line": 384
2026-06-19T23:28:15.8102123Z             },
2026-06-19T23:28:15.8102228Z             {
2026-06-19T23:28:15.8102358Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-19T23:28:15.8102466Z               "line": 102
2026-06-19T23:28:15.8102567Z             },
2026-06-19T23:28:15.8102668Z             {
2026-06-19T23:28:15.8102795Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-19T23:28:15.8102887Z               "line": 123
2026-06-19T23:28:15.8102996Z             },
2026-06-19T23:28:15.8103091Z             {
2026-06-19T23:28:15.8103221Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-19T23:28:15.8103325Z               "line": 142
2026-06-19T23:28:15.8103429Z             },
2026-06-19T23:28:15.8103526Z             {
2026-06-19T23:28:15.8103654Z               "path": "crates/spt-store/src/info.rs",
2026-06-19T23:28:15.8103764Z               "line": 556
2026-06-19T23:28:15.8103865Z             },
2026-06-19T23:28:15.8103969Z             {
2026-06-19T23:28:15.8104093Z               "path": "crates/spt-store/src/perch.rs",
2026-06-19T23:28:15.8104204Z               "line": 566
2026-06-19T23:28:15.8104307Z             },
2026-06-19T23:28:15.8104403Z             {
2026-06-19T23:28:15.8104528Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8104631Z               "line": 8228
2026-06-19T23:28:15.8104735Z             }
2026-06-19T23:28:15.8104826Z           ]
2026-06-19T23:28:15.8104923Z         }
2026-06-19T23:28:15.8105021Z       }
2026-06-19T23:28:15.8105122Z     },
2026-06-19T23:28:15.8105223Z     {
2026-06-19T23:28:15.8105336Z       "id": "REQ-UPD-5",
2026-06-19T23:28:15.8105504Z       "title": "spt-core ripple-updates registered adapters",
2026-06-19T23:28:15.8105609Z       "requiredStages": [
2026-06-19T23:28:15.8105712Z         "impl",
2026-06-19T23:28:15.8105819Z         "unit"
2026-06-19T23:28:15.8105909Z       ],
2026-06-19T23:28:15.8106013Z       "stages": {
2026-06-19T23:28:15.8106110Z         "doc": {
2026-06-19T23:28:15.8106218Z           "complete": false,
2026-06-19T23:28:15.8106454Z           "evidence": []
2026-06-19T23:28:15.8106557Z         },
2026-06-19T23:28:15.8106662Z         "impl": {
2026-06-19T23:28:15.8106773Z           "complete": true,
2026-06-19T23:28:15.8106876Z           "evidence": [
2026-06-19T23:28:15.8106966Z             {
2026-06-19T23:28:15.8107123Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8107231Z               "line": 27
2026-06-19T23:28:15.8107335Z             },
2026-06-19T23:28:15.8107436Z             {
2026-06-19T23:28:15.8107584Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8107683Z               "line": 87
2026-06-19T23:28:15.8107855Z             },
2026-06-19T23:28:15.8107960Z             {
2026-06-19T23:28:15.8108104Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8108213Z               "line": 145
2026-06-19T23:28:15.8108309Z             },
2026-06-19T23:28:15.8108404Z             {
2026-06-19T23:28:15.8108547Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8108652Z               "line": 492
2026-06-19T23:28:15.8108747Z             },
2026-06-19T23:28:15.8108847Z             {
2026-06-19T23:28:15.8109048Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8109157Z               "line": 546
2026-06-19T23:28:15.8109258Z             }
2026-06-19T23:28:15.8109358Z           ]
2026-06-19T23:28:15.8109453Z         },
2026-06-19T23:28:15.8109558Z         "int": {
2026-06-19T23:28:15.8109654Z           "complete": false,
2026-06-19T23:28:15.8109753Z           "evidence": []
2026-06-19T23:28:15.8109857Z         },
2026-06-19T23:28:15.8109962Z         "unit": {
2026-06-19T23:28:15.8110070Z           "complete": true,
2026-06-19T23:28:15.8110169Z           "evidence": [
2026-06-19T23:28:15.8110275Z             {
2026-06-19T23:28:15.8110413Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8110517Z               "line": 272
2026-06-19T23:28:15.8110628Z             },
2026-06-19T23:28:15.8110723Z             {
2026-06-19T23:28:15.8110865Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8110971Z               "line": 286
2026-06-19T23:28:15.8111076Z             },
2026-06-19T23:28:15.8111171Z             {
2026-06-19T23:28:15.8111319Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8111419Z               "line": 300
2026-06-19T23:28:15.8111524Z             },
2026-06-19T23:28:15.8111625Z             {
2026-06-19T23:28:15.8111766Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8111863Z               "line": 314
2026-06-19T23:28:15.8111972Z             },
2026-06-19T23:28:15.8112063Z             {
2026-06-19T23:28:15.8112207Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8112301Z               "line": 348
2026-06-19T23:28:15.8112410Z             },
2026-06-19T23:28:15.8112500Z             {
2026-06-19T23:28:15.8112651Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.8112769Z               "line": 1060
2026-06-19T23:28:15.8112865Z             }
2026-06-19T23:28:15.8112984Z           ]
2026-06-19T23:28:15.8113089Z         }
2026-06-19T23:28:15.8113190Z       }
2026-06-19T23:28:15.8113285Z     },
2026-06-19T23:28:15.8113394Z     {
2026-06-19T23:28:15.8113500Z       "id": "REQ-UPD-6",
2026-06-19T23:28:15.8114314Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-19T23:28:15.8114435Z       "requiredStages": [
2026-06-19T23:28:15.8114534Z         "doc",
2026-06-19T23:28:15.8114643Z         "impl",
2026-06-19T23:28:15.8114749Z         "unit",
2026-06-19T23:28:15.8114849Z         "int"
2026-06-19T23:28:15.8115055Z       ],
2026-06-19T23:28:15.8115159Z       "stages": {
2026-06-19T23:28:15.8115267Z         "doc": {
2026-06-19T23:28:15.8115377Z           "complete": true,
2026-06-19T23:28:15.8115488Z           "evidence": [
2026-06-19T23:28:15.8115581Z             {
2026-06-19T23:28:15.8115745Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-19T23:28:15.8115854Z               "line": 3
2026-06-19T23:28:15.8115953Z             },
2026-06-19T23:28:15.8116055Z             {
2026-06-19T23:28:15.8116173Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-19T23:28:15.8116282Z               "line": 3
2026-06-19T23:28:15.8116379Z             },
2026-06-19T23:28:15.8116568Z             {
2026-06-19T23:28:15.8116750Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-19T23:28:15.8116855Z               "line": 3
2026-06-19T23:28:15.8116956Z             }
2026-06-19T23:28:15.8117060Z           ]
2026-06-19T23:28:15.8117160Z         },
2026-06-19T23:28:15.8117260Z         "impl": {
2026-06-19T23:28:15.8117375Z           "complete": true,
2026-06-19T23:28:15.8117484Z           "evidence": [
2026-06-19T23:28:15.8117573Z             {
2026-06-19T23:28:15.8117716Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8117820Z               "line": 76
2026-06-19T23:28:15.8117924Z             },
2026-06-19T23:28:15.8118025Z             {
2026-06-19T23:28:15.8118163Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8118263Z               "line": 212
2026-06-19T23:28:15.8118359Z             },
2026-06-19T23:28:15.8118458Z             {
2026-06-19T23:28:15.8118593Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8118693Z               "line": 69
2026-06-19T23:28:15.8118797Z             },
2026-06-19T23:28:15.8118893Z             {
2026-06-19T23:28:15.8119116Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8119217Z               "line": 133
2026-06-19T23:28:15.8119317Z             },
2026-06-19T23:28:15.8119417Z             {
2026-06-19T23:28:15.8119557Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8119660Z               "line": 243
2026-06-19T23:28:15.8119751Z             },
2026-06-19T23:28:15.8119852Z             {
2026-06-19T23:28:15.8119975Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8120080Z               "line": 406
2026-06-19T23:28:15.8120181Z             },
2026-06-19T23:28:15.8120280Z             {
2026-06-19T23:28:15.8120417Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8120513Z               "line": 534
2026-06-19T23:28:15.8120611Z             },
2026-06-19T23:28:15.8120710Z             {
2026-06-19T23:28:15.8120854Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8120959Z               "line": 548
2026-06-19T23:28:15.8121063Z             },
2026-06-19T23:28:15.8121159Z             {
2026-06-19T23:28:15.8121288Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8121401Z               "line": 603
2026-06-19T23:28:15.8121493Z             },
2026-06-19T23:28:15.8121598Z             {
2026-06-19T23:28:15.8121731Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8121841Z               "line": 634
2026-06-19T23:28:15.8121941Z             },
2026-06-19T23:28:15.8122031Z             {
2026-06-19T23:28:15.8122175Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-19T23:28:15.8122279Z               "line": 137
2026-06-19T23:28:15.8122384Z             },
2026-06-19T23:28:15.8122490Z             {
2026-06-19T23:28:15.8122623Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-19T23:28:15.8122729Z               "line": 184
2026-06-19T23:28:15.8122829Z             },
2026-06-19T23:28:15.8122926Z             {
2026-06-19T23:28:15.8123055Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8123164Z               "line": 78
2026-06-19T23:28:15.8123397Z             },
2026-06-19T23:28:15.8123488Z             {
2026-06-19T23:28:15.8123625Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8123731Z               "line": 114
2026-06-19T23:28:15.8123831Z             },
2026-06-19T23:28:15.8123930Z             {
2026-06-19T23:28:15.8124065Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8124169Z               "line": 185
2026-06-19T23:28:15.8124259Z             },
2026-06-19T23:28:15.8124360Z             {
2026-06-19T23:28:15.8124488Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8124598Z               "line": 260
2026-06-19T23:28:15.8124803Z             },
2026-06-19T23:28:15.8124903Z             {
2026-06-19T23:28:15.8125047Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8125146Z               "line": 292
2026-06-19T23:28:15.8125256Z             },
2026-06-19T23:28:15.8125353Z             {
2026-06-19T23:28:15.8125490Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8125596Z               "line": 323
2026-06-19T23:28:15.8125696Z             },
2026-06-19T23:28:15.8125798Z             {
2026-06-19T23:28:15.8125927Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8126033Z               "line": 346
2026-06-19T23:28:15.8126127Z             },
2026-06-19T23:28:15.8126232Z             {
2026-06-19T23:28:15.8126361Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8126470Z               "line": 388
2026-06-19T23:28:15.8126572Z             },
2026-06-19T23:28:15.8126671Z             {
2026-06-19T23:28:15.8126804Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8126900Z               "line": 398
2026-06-19T23:28:15.8126995Z             },
2026-06-19T23:28:15.8127086Z             {
2026-06-19T23:28:15.8127215Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8127324Z               "line": 410
2026-06-19T23:28:15.8127419Z             },
2026-06-19T23:28:15.8127526Z             {
2026-06-19T23:28:15.8127653Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8127763Z               "line": 420
2026-06-19T23:28:15.8127869Z             },
2026-06-19T23:28:15.8127954Z             {
2026-06-19T23:28:15.8128095Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8128186Z               "line": 439
2026-06-19T23:28:15.8128290Z             },
2026-06-19T23:28:15.8128385Z             {
2026-06-19T23:28:15.8128508Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8128619Z               "line": 449
2026-06-19T23:28:15.8128718Z             },
2026-06-19T23:28:15.8128818Z             {
2026-06-19T23:28:15.8129013Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8129124Z               "line": 94
2026-06-19T23:28:15.8129224Z             },
2026-06-19T23:28:15.8129323Z             {
2026-06-19T23:28:15.8129468Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8129562Z               "line": 120
2026-06-19T23:28:15.8129671Z             },
2026-06-19T23:28:15.8129768Z             {
2026-06-19T23:28:15.8129891Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8129986Z               "line": 135
2026-06-19T23:28:15.8130087Z             },
2026-06-19T23:28:15.8130178Z             {
2026-06-19T23:28:15.8130301Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8130407Z               "line": 162
2026-06-19T23:28:15.8130507Z             },
2026-06-19T23:28:15.8130606Z             {
2026-06-19T23:28:15.8130736Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8130854Z               "line": 174
2026-06-19T23:28:15.8130958Z             },
2026-06-19T23:28:15.8131053Z             {
2026-06-19T23:28:15.8131181Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8131385Z               "line": 185
2026-06-19T23:28:15.8131491Z             },
2026-06-19T23:28:15.8131576Z             {
2026-06-19T23:28:15.8131710Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8131824Z               "line": 451
2026-06-19T23:28:15.8131924Z             },
2026-06-19T23:28:15.8132025Z             {
2026-06-19T23:28:15.8132158Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8132266Z               "line": 573
2026-06-19T23:28:15.8132364Z             },
2026-06-19T23:28:15.8132468Z             {
2026-06-19T23:28:15.8132601Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8132801Z               "line": 171
2026-06-19T23:28:15.8132906Z             },
2026-06-19T23:28:15.8133003Z             {
2026-06-19T23:28:15.8133135Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.8133240Z               "line": 65
2026-06-19T23:28:15.8133341Z             },
2026-06-19T23:28:15.8133445Z             {
2026-06-19T23:28:15.8133572Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.8133677Z               "line": 71
2026-06-19T23:28:15.8133776Z             },
2026-06-19T23:28:15.8133880Z             {
2026-06-19T23:28:15.8134005Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-19T23:28:15.8134105Z               "line": 77
2026-06-19T23:28:15.8134209Z             },
2026-06-19T23:28:15.8134296Z             {
2026-06-19T23:28:15.8134420Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8134529Z               "line": 778
2026-06-19T23:28:15.8134653Z             },
2026-06-19T23:28:15.8134758Z             {
2026-06-19T23:28:15.8134882Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8134987Z               "line": 795
2026-06-19T23:28:15.8135087Z             },
2026-06-19T23:28:15.8135187Z             {
2026-06-19T23:28:15.8135297Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8135402Z               "line": 838
2026-06-19T23:28:15.8135511Z             },
2026-06-19T23:28:15.8135607Z             {
2026-06-19T23:28:15.8135736Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8135836Z               "line": 981
2026-06-19T23:28:15.8135936Z             },
2026-06-19T23:28:15.8136030Z             {
2026-06-19T23:28:15.8136151Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8136261Z               "line": 1131
2026-06-19T23:28:15.8136354Z             }
2026-06-19T23:28:15.8136463Z           ]
2026-06-19T23:28:15.8136565Z         },
2026-06-19T23:28:15.8136669Z         "int": {
2026-06-19T23:28:15.8136768Z           "complete": true,
2026-06-19T23:28:15.8136884Z           "evidence": [
2026-06-19T23:28:15.8136993Z             {
2026-06-19T23:28:15.8137151Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-19T23:28:15.8137260Z               "line": 569
2026-06-19T23:28:15.8137374Z             },
2026-06-19T23:28:15.8137475Z             {
2026-06-19T23:28:15.8137628Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-19T23:28:15.8137741Z               "line": 135
2026-06-19T23:28:15.8137843Z             }
2026-06-19T23:28:15.8137947Z           ]
2026-06-19T23:28:15.8138047Z         },
2026-06-19T23:28:15.8138138Z         "unit": {
2026-06-19T23:28:15.8138246Z           "complete": true,
2026-06-19T23:28:15.8138347Z           "evidence": [
2026-06-19T23:28:15.8138444Z             {
2026-06-19T23:28:15.8138585Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8138689Z               "line": 626
2026-06-19T23:28:15.8138790Z             },
2026-06-19T23:28:15.8138892Z             {
2026-06-19T23:28:15.8139083Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8139189Z               "line": 675
2026-06-19T23:28:15.8139292Z             },
2026-06-19T23:28:15.8139412Z             {
2026-06-19T23:28:15.8139545Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-19T23:28:15.8139761Z               "line": 696
2026-06-19T23:28:15.8139855Z             },
2026-06-19T23:28:15.8139960Z             {
2026-06-19T23:28:15.8140089Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8140198Z               "line": 513
2026-06-19T23:28:15.8140303Z             },
2026-06-19T23:28:15.8140400Z             {
2026-06-19T23:28:15.8140527Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8140633Z               "line": 638
2026-06-19T23:28:15.8140733Z             },
2026-06-19T23:28:15.8140842Z             {
2026-06-19T23:28:15.8140982Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8141176Z               "line": 675
2026-06-19T23:28:15.8141273Z             },
2026-06-19T23:28:15.8141368Z             {
2026-06-19T23:28:15.8141495Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8141604Z               "line": 947
2026-06-19T23:28:15.8141708Z             },
2026-06-19T23:28:15.8141807Z             {
2026-06-19T23:28:15.8141935Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8142041Z               "line": 969
2026-06-19T23:28:15.8142145Z             },
2026-06-19T23:28:15.8142231Z             {
2026-06-19T23:28:15.8142365Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8142465Z               "line": 986
2026-06-19T23:28:15.8142565Z             },
2026-06-19T23:28:15.8142665Z             {
2026-06-19T23:28:15.8145990Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8146125Z               "line": 1001
2026-06-19T23:28:15.8146229Z             },
2026-06-19T23:28:15.8146333Z             {
2026-06-19T23:28:15.8146487Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8146595Z               "line": 1027
2026-06-19T23:28:15.8146701Z             },
2026-06-19T23:28:15.8146797Z             {
2026-06-19T23:28:15.8146947Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-19T23:28:15.8147052Z               "line": 457
2026-06-19T23:28:15.8147153Z             },
2026-06-19T23:28:15.8147248Z             {
2026-06-19T23:28:15.8147387Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-19T23:28:15.8147496Z               "line": 338
2026-06-19T23:28:15.8147600Z             },
2026-06-19T23:28:15.8147702Z             {
2026-06-19T23:28:15.8147825Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8147934Z               "line": 10521
2026-06-19T23:28:15.8148035Z             },
2026-06-19T23:28:15.8148130Z             {
2026-06-19T23:28:15.8148258Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8148359Z               "line": 1260
2026-06-19T23:28:15.8148459Z             },
2026-06-19T23:28:15.8148549Z             {
2026-06-19T23:28:15.8148684Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-19T23:28:15.8148788Z               "line": 130
2026-06-19T23:28:15.8148878Z             }
2026-06-19T23:28:15.8149075Z           ]
2026-06-19T23:28:15.8149178Z         }
2026-06-19T23:28:15.8149283Z       }
2026-06-19T23:28:15.8149378Z     },
2026-06-19T23:28:15.8149476Z     {
2026-06-19T23:28:15.8149580Z       "id": "REQ-UPD-7",
2026-06-19T23:28:15.8151722Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-19T23:28:15.8151866Z       "requiredStages": [
2026-06-19T23:28:15.8151984Z         "impl",
2026-06-19T23:28:15.8152236Z         "unit"
2026-06-19T23:28:15.8152338Z       ],
2026-06-19T23:28:15.8152442Z       "stages": {
2026-06-19T23:28:15.8152544Z         "doc": {
2026-06-19T23:28:15.8152648Z           "complete": false,
2026-06-19T23:28:15.8152753Z           "evidence": []
2026-06-19T23:28:15.8152845Z         },
2026-06-19T23:28:15.8152940Z         "impl": {
2026-06-19T23:28:15.8153044Z           "complete": true,
2026-06-19T23:28:15.8153150Z           "evidence": [
2026-06-19T23:28:15.8153249Z             {
2026-06-19T23:28:15.8153378Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8153489Z               "line": 2598
2026-06-19T23:28:15.8153673Z             }
2026-06-19T23:28:15.8153774Z           ]
2026-06-19T23:28:15.8153879Z         },
2026-06-19T23:28:15.8153978Z         "int": {
2026-06-19T23:28:15.8154084Z           "complete": false,
2026-06-19T23:28:15.8154184Z           "evidence": []
2026-06-19T23:28:15.8154288Z         },
2026-06-19T23:28:15.8154390Z         "unit": {
2026-06-19T23:28:15.8154494Z           "complete": true,
2026-06-19T23:28:15.8154598Z           "evidence": [
2026-06-19T23:28:15.8154692Z             {
2026-06-19T23:28:15.8154807Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8154915Z               "line": 10497
2026-06-19T23:28:15.8155014Z             }
2026-06-19T23:28:15.8155110Z           ]
2026-06-19T23:28:15.8155211Z         }
2026-06-19T23:28:15.8155310Z       }
2026-06-19T23:28:15.8155407Z     },
2026-06-19T23:28:15.8155497Z     {
2026-06-19T23:28:15.8155606Z       "id": "REQ-UPD-8",
2026-06-19T23:28:15.8158066Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-19T23:28:15.8158194Z       "requiredStages": [
2026-06-19T23:28:15.8158300Z         "impl",
2026-06-19T23:28:15.8158395Z         "unit"
2026-06-19T23:28:15.8158494Z       ],
2026-06-19T23:28:15.8158596Z       "stages": {
2026-06-19T23:28:15.8158700Z         "doc": {
2026-06-19T23:28:15.8158809Z           "complete": false,
2026-06-19T23:28:15.8158915Z           "evidence": []
2026-06-19T23:28:15.8159096Z         },
2026-06-19T23:28:15.8159182Z         "impl": {
2026-06-19T23:28:15.8159287Z           "complete": true,
2026-06-19T23:28:15.8159390Z           "evidence": [
2026-06-19T23:28:15.8159496Z             {
2026-06-19T23:28:15.8159640Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8159743Z               "line": 77
2026-06-19T23:28:15.8159848Z             },
2026-06-19T23:28:15.8159952Z             {
2026-06-19T23:28:15.8160093Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8160184Z               "line": 49
2026-06-19T23:28:15.8160265Z             },
2026-06-19T23:28:15.8160351Z             {
2026-06-19T23:28:15.8160475Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8160580Z               "line": 152
2026-06-19T23:28:15.8160656Z             },
2026-06-19T23:28:15.8160741Z             {
2026-06-19T23:28:15.8160862Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8160942Z               "line": 215
2026-06-19T23:28:15.8161027Z             },
2026-06-19T23:28:15.8161109Z             {
2026-06-19T23:28:15.8161238Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8161458Z               "line": 230
2026-06-19T23:28:15.8161544Z             },
2026-06-19T23:28:15.8161625Z             {
2026-06-19T23:28:15.8161748Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8161830Z               "line": 247
2026-06-19T23:28:15.8161914Z             },
2026-06-19T23:28:15.8162000Z             {
2026-06-19T23:28:15.8162111Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8162201Z               "line": 269
2026-06-19T23:28:15.8162282Z             },
2026-06-19T23:28:15.8162368Z             {
2026-06-19T23:28:15.8162489Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8162681Z               "line": 66
2026-06-19T23:28:15.8162767Z             },
2026-06-19T23:28:15.8162852Z             {
2026-06-19T23:28:15.8162970Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8163047Z               "line": 154
2026-06-19T23:28:15.8163137Z             },
2026-06-19T23:28:15.8163218Z             {
2026-06-19T23:28:15.8163332Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8163419Z               "line": 2402
2026-06-19T23:28:15.8163500Z             },
2026-06-19T23:28:15.8163585Z             {
2026-06-19T23:28:15.8163686Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8163785Z               "line": 2465
2026-06-19T23:28:15.8163867Z             },
2026-06-19T23:28:15.8163952Z             {
2026-06-19T23:28:15.8164053Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8164143Z               "line": 2475
2026-06-19T23:28:15.8164219Z             },
2026-06-19T23:28:15.8164305Z             {
2026-06-19T23:28:15.8164415Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8164515Z               "line": 2482
2026-06-19T23:28:15.8164596Z             },
2026-06-19T23:28:15.8164683Z             {
2026-06-19T23:28:15.8164777Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8164873Z               "line": 2599
2026-06-19T23:28:15.8164950Z             },
2026-06-19T23:28:15.8165036Z             {
2026-06-19T23:28:15.8165139Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8165228Z               "line": 480
2026-06-19T23:28:15.8165315Z             },
2026-06-19T23:28:15.8165390Z             {
2026-06-19T23:28:15.8165504Z               "path": "crates/xtask/src/main.rs",
2026-06-19T23:28:15.8165584Z               "line": 494
2026-06-19T23:28:15.8165671Z             }
2026-06-19T23:28:15.8165761Z           ]
2026-06-19T23:28:15.8165842Z         },
2026-06-19T23:28:15.8165937Z         "int": {
2026-06-19T23:28:15.8166033Z           "complete": false,
2026-06-19T23:28:15.8166132Z           "evidence": []
2026-06-19T23:28:15.8166218Z         },
2026-06-19T23:28:15.8166305Z         "unit": {
2026-06-19T23:28:15.8166405Z           "complete": true,
2026-06-19T23:28:15.8166495Z           "evidence": [
2026-06-19T23:28:15.8166587Z             {
2026-06-19T23:28:15.8166715Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-19T23:28:15.8166800Z               "line": 476
2026-06-19T23:28:15.8166882Z             },
2026-06-19T23:28:15.8166968Z             {
2026-06-19T23:28:15.8167082Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-19T23:28:15.8167167Z               "line": 580
2026-06-19T23:28:15.8167250Z             },
2026-06-19T23:28:15.8167329Z             {
2026-06-19T23:28:15.8167439Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8167521Z               "line": 10499
2026-06-19T23:28:15.8167607Z             },
2026-06-19T23:28:15.8167692Z             {
2026-06-19T23:28:15.8167797Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8167889Z               "line": 10521
2026-06-19T23:28:15.8167969Z             }
2026-06-19T23:28:15.8168063Z           ]
2026-06-19T23:28:15.8168144Z         }
2026-06-19T23:28:15.8168230Z       }
2026-06-19T23:28:15.8168307Z     },
2026-06-19T23:28:15.8168468Z     {
2026-06-19T23:28:15.8168555Z       "id": "REQ-UPD-9",
2026-06-19T23:28:15.8171145Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-19T23:28:15.8171354Z       "requiredStages": [
2026-06-19T23:28:15.8171451Z         "doc",
2026-06-19T23:28:15.8171541Z         "impl",
2026-06-19T23:28:15.8171626Z         "unit"
2026-06-19T23:28:15.8171703Z       ],
2026-06-19T23:28:15.8171794Z       "stages": {
2026-06-19T23:28:15.8171874Z         "doc": {
2026-06-19T23:28:15.8171960Z           "complete": true,
2026-06-19T23:28:15.8172051Z           "evidence": [
2026-06-19T23:28:15.8172127Z             {
2026-06-19T23:28:15.8172236Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.8172333Z               "line": 93
2026-06-19T23:28:15.8172419Z             },
2026-06-19T23:28:15.8172503Z             {
2026-06-19T23:28:15.8172609Z               "path": "docs/MANIFEST.md",
2026-06-19T23:28:15.8172705Z               "line": 260
2026-06-19T23:28:15.8172785Z             }
2026-06-19T23:28:15.8172866Z           ]
2026-06-19T23:28:15.8172953Z         },
2026-06-19T23:28:15.8173034Z         "impl": {
2026-06-19T23:28:15.8173128Z           "complete": true,
2026-06-19T23:28:15.8173204Z           "evidence": [
2026-06-19T23:28:15.8173299Z             {
2026-06-19T23:28:15.8173431Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8173520Z               "line": 128
2026-06-19T23:28:15.8173607Z             },
2026-06-19T23:28:15.8173688Z             {
2026-06-19T23:28:15.8173811Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8173892Z               "line": 533
2026-06-19T23:28:15.8173984Z             },
2026-06-19T23:28:15.8174070Z             {
2026-06-19T23:28:15.8174188Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.8174284Z               "line": 448
2026-06-19T23:28:15.8174374Z             },
2026-06-19T23:28:15.8174459Z             {
2026-06-19T23:28:15.8174580Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.8174665Z               "line": 494
2026-06-19T23:28:15.8174747Z             },
2026-06-19T23:28:15.8174832Z             {
2026-06-19T23:28:15.8174957Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.8175041Z               "line": 917
2026-06-19T23:28:15.8175127Z             },
2026-06-19T23:28:15.8175210Z             {
2026-06-19T23:28:15.8175332Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-19T23:28:15.8175414Z               "line": 302
2026-06-19T23:28:15.8175500Z             },
2026-06-19T23:28:15.8175592Z             {
2026-06-19T23:28:15.8175689Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8175789Z               "line": 5647
2026-06-19T23:28:15.8175870Z             },
2026-06-19T23:28:15.8175960Z             {
2026-06-19T23:28:15.8176064Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8176164Z               "line": 5692
2026-06-19T23:28:15.8176255Z             },
2026-06-19T23:28:15.8176335Z             {
2026-06-19T23:28:15.8176449Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8176537Z               "line": 5829
2026-06-19T23:28:15.8176721Z             },
2026-06-19T23:28:15.8176808Z             {
2026-06-19T23:28:15.8176912Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8176993Z               "line": 5850
2026-06-19T23:28:15.8177079Z             },
2026-06-19T23:28:15.8177166Z             {
2026-06-19T23:28:15.8177265Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8177350Z               "line": 5873
2026-06-19T23:28:15.8177432Z             },
2026-06-19T23:28:15.8177519Z             {
2026-06-19T23:28:15.8177618Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8177699Z               "line": 5900
2026-06-19T23:28:15.8177781Z             }
2026-06-19T23:28:15.8177932Z           ]
2026-06-19T23:28:15.8178024Z         },
2026-06-19T23:28:15.8178110Z         "int": {
2026-06-19T23:28:15.8178209Z           "complete": false,
2026-06-19T23:28:15.8178305Z           "evidence": []
2026-06-19T23:28:15.8178387Z         },
2026-06-19T23:28:15.8178473Z         "unit": {
2026-06-19T23:28:15.8178561Z           "complete": true,
2026-06-19T23:28:15.8178646Z           "evidence": [
2026-06-19T23:28:15.8178732Z             {
2026-06-19T23:28:15.8178867Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-19T23:28:15.8179028Z               "line": 259
2026-06-19T23:28:15.8179096Z             },
2026-06-19T23:28:15.8179177Z             {
2026-06-19T23:28:15.8179304Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-19T23:28:15.8179392Z               "line": 657
2026-06-19T23:28:15.8179491Z             },
2026-06-19T23:28:15.8179572Z             {
2026-06-19T23:28:15.8179691Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-19T23:28:15.8179777Z               "line": 1096
2026-06-19T23:28:15.8179853Z             },
2026-06-19T23:28:15.8179939Z             {
2026-06-19T23:28:15.8180045Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8180144Z               "line": 7537
2026-06-19T23:28:15.8180225Z             }
2026-06-19T23:28:15.8180312Z           ]
2026-06-19T23:28:15.8180402Z         }
2026-06-19T23:28:15.8180482Z       }
2026-06-19T23:28:15.8180564Z     },
2026-06-19T23:28:15.8180645Z     {
2026-06-19T23:28:15.8180741Z       "id": "REQ-WHOAMI-1",
2026-06-19T23:28:15.8182368Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-19T23:28:15.8182477Z       "requiredStages": [
2026-06-19T23:28:15.8182558Z         "doc",
2026-06-19T23:28:15.8182650Z         "impl",
2026-06-19T23:28:15.8182730Z         "unit"
2026-06-19T23:28:15.8182815Z       ],
2026-06-19T23:28:15.8182903Z       "stages": {
2026-06-19T23:28:15.8182983Z         "doc": {
2026-06-19T23:28:15.8183078Z           "complete": true,
2026-06-19T23:28:15.8183169Z           "evidence": [
2026-06-19T23:28:15.8183256Z             {
2026-06-19T23:28:15.8183359Z               "path": "CONTEXT.md",
2026-06-19T23:28:15.8183440Z               "line": 707
2026-06-19T23:28:15.8183527Z             }
2026-06-19T23:28:15.8183609Z           ]
2026-06-19T23:28:15.8183688Z         },
2026-06-19T23:28:15.8183773Z         "impl": {
2026-06-19T23:28:15.8183859Z           "complete": true,
2026-06-19T23:28:15.8183944Z           "evidence": [
2026-06-19T23:28:15.8184024Z             {
2026-06-19T23:28:15.8184133Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8184224Z               "line": 3162
2026-06-19T23:28:15.8184315Z             },
2026-06-19T23:28:15.8184400Z             {
2026-06-19T23:28:15.8184496Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8184591Z               "line": 3190
2026-06-19T23:28:15.8184777Z             }
2026-06-19T23:28:15.8184868Z           ]
2026-06-19T23:28:15.8184949Z         },
2026-06-19T23:28:15.8185034Z         "int": {
2026-06-19T23:28:15.8185135Z           "complete": false,
2026-06-19T23:28:15.8185226Z           "evidence": []
2026-06-19T23:28:15.8185307Z         },
2026-06-19T23:28:15.8185392Z         "unit": {
2026-06-19T23:28:15.8185488Z           "complete": true,
2026-06-19T23:28:15.8185573Z           "evidence": [
2026-06-19T23:28:15.8185650Z             {
2026-06-19T23:28:15.8185755Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8185841Z               "line": 7819
2026-06-19T23:28:15.8185921Z             },
2026-06-19T23:28:15.8186123Z             {
2026-06-19T23:28:15.8186226Z               "path": "crates/spt/src/cli.rs",
2026-06-19T23:28:15.8186302Z               "line": 7872
2026-06-19T23:28:15.8186387Z             }
2026-06-19T23:28:15.8186473Z           ]
2026-06-19T23:28:15.8186553Z         }
2026-06-19T23:28:15.8186642Z       }
2026-06-19T23:28:15.8186729Z     }
2026-06-19T23:28:15.8186820Z   ],
2026-06-19T23:28:15.8186910Z   "findings": []
2026-06-19T23:28:15.8187005Z }
